نود جی اس چیست ؟
Node.js چیست؟
Node.js یک پلتفرم کدنویسی سمت سرور است که بر پایه موتور جاوا اسکریپت مرورگر گوگل کروم کدنویسی شده است. این پلتفرم توسط رایان داهل در سال ۲۰۰۹ ایجاد شده است و در حال حاضر آخرین نسخه آن ورژن 0.10.36 میباشد.
بر اساس اعلان مستندات رسمی تعریف Node.Js به شکل زیر عنوان میشود:
Node.js یک پلتفرم ایجاد شده بر پایه موتور جاوا اسکریپت گوگل کروم است که باعث سهولت ایجاد و مقیاسپذیری برنامههای تحت شبکه میشود. این پلتفرم از یک مدل I/O رویداد محور استفاده میکند که مسدود نشونده (non-blocking) است و همین امر باعث کاهش فشار موجود بر روی سرور و افزایش کارآیی میشود و این امر برای اجرای برنامههای مبتنی بر داده که بصورت بلادرنگ (Real-Time) بر روی سرورهای نامتمرکز استفاده میشوند بسیار مناسب است.”
Node.js یک پلتفرم کد باز برای گسترش برنامههای سمت سرور و تحت شبکه میباشد. این پلتفرم بر اساس زبان جاوا اسکریپت نوشته شده است و میزبانی و هاست Nodejs قابلیت پیادهسازی بر روی سیستمعاملهای ویندوز، لینوکس و سیستم عامل کامپیوترهای اپل را دارد.
این فریم ورک کتابخانهای عظیم از ماژولهای مختلف جاوا اسکریپت را فراهم میکند که سهولت در گسترش وباپلیکیشن ها را تا حد زیادی فراهم میآورد.
ویژگیهای Node.JS:
سرعت بالا: با توجه به این که نود جی اس بر پایه نسخه ۸ موتور جاوا اسکریپت گوگل کروم پیادهسازی شده است در اجرای کدها بسیار سریع عمل میکند.
نود جی اس از یک برنامه تک موضوعی استفاده میکند و همان برنامه میتواند سرویسی برای تعداد بسیار بیشتری از درخواست ها نسبت به مکانیزمهای قدیمی سرور مثل HTTP سرور آپاچی فراهم کند.
عدم وجود بافرینگ: این پلتفرم هیچ دادهای را بافر نمیکند و دادههای خروجی را به صورت تکهتکه منتشر میکند.
Node.js فریم ورک نیست
قبل از اینکه بدانیم Node.js چیست بهتر است درباره این صحبت کنیم که نود جی اس چه چیزهایی نیست. نود جی اس یک فریم ورک جاوا اسکریپت نیست. فریم ورک به مجموعه ای از کتابخانهها و استانداردها گفته میشود که کار با یک زبان خاص را آسانتر کرده و مانع انجام کارهای تکراری و یکنواخت توسط برنامه نویس میشوند.
فریم ورکهای زیادی با زبان جاوا اسکریپت طراحی شده اند و در بخشهای مختلف مورد استفاده قرار میگیرند. برخی از فریم ورکهای معروف جاوا اسکریپت عبارتند از: Angular، React، Meteor.js، Vue.js و غیره. استفاده از این فریم ورکها تا حد زیادی کارایی و امنیت محصول ما را بالا برده و درمقابل هزینهها را هم کاهش میدهد.
پس دقت داشته باشید که Node.js فریم ورک نبوده و تعریف دقیق آن “محیط اجرایی” یا “run-time environment” میباشد. در واقع نود جی اس کمی فراتر از فریم ورک رفته و دامنه کاربردهای آن کمی بیشتر از فریم ورک میباشد. Node.js محدود به برنامههای تحت وب نبوده و میتوان از آن در ساخت میکروکنترلر ها، Rest APIها، بستههای سیستم عامل، رباتیک و حتی در مراحل پیشرفته در ساخت برنامه برای هواپیمای بدون سرنشین نیز استفاده کرد.
مزایا نود چیست؟
همانطور که گفتیم نود در کنترل منابع در تعداد بالای درخواست بسیار بهتر از بقیه عمل می کند و مهم تر از آن با جاوااسکریپت کار میکند و نیاز به یادگیری زبان دیگری نیست. در سال ۲۰۱۰ فردی به نام ایزاک اسکلوترپکیج منیجر ویژه ای برای نود به نام NPMرا نوشت که با آن می توان بیش از نیم میلیون انواع ماژول های جدید را از طریق محیط ترمینال برای نود دریافت کرد.
نود چه معایبی دارد؟
مانند خیلی از برنامه های دیگر نود چون در ابتدای راه خود هست هنوز کامل نشده و ضعف هایی دارد. یکی از بزرگترین ضعف های نود این است که با اینکه شما می توانید از آن در سرور یا VPS خودتون استفاده کنید ولی همچنان امکان استفاده بر روی هاست های اشتراکی وجود ندارد.
کاربردهای Node.Js
ساخت برنامههای تک صفحه ای (SPA)
SPA مخفف single-page app بوده و برنامه هایی گفته میشود که تمام بخشهای آن در یک صفحه پیاده سازی میشود. از SPA بیشتر برای ساخت شبکههای اجتماعی، سرویسهای ایمیل، سایتهای اشتراک ویدئو و غیره استفاده میشود. یکی از معروفترین سایت هایی که به این شکل ساخته شده است، سرویس اشتراک ویدئو یوتیوب است. از آنجایی که نود جی اس از برنامه نویسی نامتقارن یا asynchronous به خوبی پشتیبانی میکند، برای ساخت برنامههای SPA انتخاب خوبی به حساب میآید.
ساخت برنامههای RTA
RTA مخفف real-time app میباشد. یعنی برنامه هایی که به صورت لحظه ای دارای تغییرات مختلفی هستند. به احتمال زیاد قبلا با این نوع برنامهها کار کرده اید. برای مثال Google Sheets، Spreadsheets یا Slack از این دست برنامهها هستند. در کل برنامههای تعاملی، ابزارهای مدیریت پروژه، کنفرانسهای ویدئویی و صوتی و سایر برنامههای RTA عملیاتهای سنگین ورودی/خروجی انجام میدهند.
ساخت چت روم
یکی از معروفترین نمونههای برنامه RTA چت رومها و پیام رسانها هستند. احتمالا روزانه از پیام رسان و چت رومهای مختلف استفاده میکنید و دوست دارید یک چت روم برای خودتان بسازید. در واقع نود جی اس یک انتخاب عالی برای این کار است. اگر قصد ساخت چنین محصولی را دارید، باید به موارد مختلفی مثل تحمل ترافیک زیاد کاربران، سبک بودن محصول، سرعت بالای ارسال پیامها وغیره توجه داشته باشید. تمام این موارد به کمک نود جی اس و یک فریم ورک جاوا اسکریپت مثل Express.js در سمت سرور قابل پیاده سازی است.
ساخت بازیهای آنلاین تحت مرورگر وب
ایده ساخت چت روم جذاب است، اما جذابیت آن زمانی بیشتر میشود که یک بازی هم برای مرورگر وب بنویسید و کنار آن بازی یک چت روم هم ارائه کنید. به کمک نود جی اس میتوان به توسعه بازی تحت وب پرداخت. در واقع با ترکیب تکنولوژیهای HTML5 و ابزارهای جاوا اسکریپت ( مثل Express.js یا Socket.ioیا غیره ) میتوانید بازیهای دوبعدی جذابی مثل Ancient Beast یا PaintWar بسازید.
10 دلیل برای اینکه Nodejs را باید یاد بگیرید
1 - Node.js بسیار سریع است :
Node.js از موتور V8 گوگل استفاده میکند . موتور V8 گوگل کدهای جاوااسکریپت را کدهای محلی ماشین کامپایل میکند و با سرعت بسیار بالایی اجرا میشود و به همین خاطر است که Node.js پرسرعت تر از بقیه فریمورک هاست .
Node.js به تیم های برنامه نویسی و شرکت ها ، کمک می کند تا برنامه های سریع و انعطاف پذیر تحت شبکه بسازند که بتوانند اتصالات موازی را با توان بالا انجام دهند .
طبق گزارش شرکت PayPal این شرکت ، بعد از کوچ کردن سیستم هایشان به Node.js مدت زمان پاسخگویی سرویس هایش طی یک ثانیه ، در حالیکه درخواست ها دوبرابر قبل شده بود ، 35% کاهش داشته .
2 - Node.js برنامه نویسان را به اشتراک گذاری کدهایشان ترغیب میکند :
Node.js سعی دارد برنامه نویسان را به NPM یا نود پکیج منیجر نزدیک کند . این مخزن دارای بیش از 50،000 پکیج آماده است که به برنامه نویسان کمک میکند تا کارهای خود را خیلی سریع پیش ببرند .
با استفاده از NPM برنامه نویسان میتوانند کدها را بروزرسانی کنند ، به اشتراک بگذارند یا مجدد استفاده کنند ، بدون اینکه زحمت خاصی بکشند .
3 - با Node.js میتوانید اپلیکیشن های تحت وب RealTime بنویسید که پرفرمنس بالاتری داشته باشد :
Node.js ابزارهای خیلی خوبی دارد تا بتوانید یک اپلیکیشن مثل چت یا بازی انلاین بسازید که بصورت real-time با سرور در ارتباط است .
همچنین Node.js برای برنامه هایی کاربرد دارد که event-based هستند مثل non-blocking driven server ها .
4 - زبان برنامه نویسی یکسان در دو طرف اپلیکیشن های Real-Time ( کلاینت و سرور ) :
توسعه دهندگان Node.js با کدهای جاوا اسکریپت هم سمت سرور و هم سمت کلاینت میتوانند کد نویسی کنند و این امر باعث آسانی مبادله اطلاعات بین کلااینت و سرور میشود .
واحد بودن زبان برنامه نویسی سمت سرور و سمت کلاینت برای یک توسعه دهنده بعنوان یک شتاب دهنده میباشد که از صرف کردن وقت برای یادگیری یک زبان برنامه نویسی دیگر جلوگیری میکند .
تصور کنید فریمورکی را انتخاب کردید که اساس کدنویسی سمت سرور و کلاینتش یکسان است و این خیلی برای راحتی برنامه نویس مهم است که زبان دیگری یاد نگیرد .
5 - استریم کردن خوب داده ها در Node.js :
دیگر فریمورک های وب به درخواست و پاسخ مبتنی بر HTTP بعنوان دیتا ابجکت نگاه میکنند اما Node.js در کنترل I/O بسیار خوب عمل میکند . بنابراین ما می توانیم از این مزایا بهره ببریم و اپلیکیشن های پیشرفته تری مبتنی بر شبکه بسازیم .
مثلا می توانید هنگام بارگذاری یک فایل صوتی و تصویری را رمزگذاری کنید ، Node.js همچنین می تواند با WebSocket ها ارتباط برقرار کند تا بتوانید اطلاعات روی HTTP را بخواند و بنویسد.
6 - هر برنامه نویس جاوا اسکریپت را میشناسد :
تقریبا میشه گفت همه ی برنامه نویس ها با جاوااسکریپت آشنا هستند و حداقل یکبار با آن کدنویسی کرده اند ، میشه گفت حداقل یکبار یک پلاگین جیکوئری را دستکاری کردن !
پیدا کردن برنامه نویس و توسعه دهنده ی وب که حرفه ای باشد کمی دشوار است . خب چرا از یک زبانی استفاده نکنیم که همه با آن آشنا هستند ؟ اینطوری سریعتر هم میشه یک برنامه نویس واسه ی آن زبان پیدا کرد . این مزیت جاوااسکریپت به پای Node.js هم نوشته میشود .
7 - Node.JS برای هاستینگ :
با پذیرفته شدن سریع Node.js از طرف توسعه دهندگان و شرکت های بزرگ ، سرویس دهنده های هاستینگ شروع به سرویس دهی به نود جی اس کردند .
برای نصب Node.js روی هاست های اشتراکی شما باید دسترسی به SSH داشته باشید اگر SSH در پنل مدیریتی هاست شما وجود ندارد یا فعال نیست با پشتیبان سرویس دهنده ی خود صحبت کنید
اما اگر از سرور مجازی یا سرور شخصی استفاده کنید مسئله ای وجود نخواهد داشت و به راحتی میتوانید Node.js را اجرا کنید .
سرویس دهنده های Platform as a Service (PaaS) در سطح جهانی نیز به فکر ایجاد بستر مناسب برای توسعه ی Node.js هستند .
8 - Node.js باعث افزایش بهره وری میشود :
بهره وری Node.js از دو جنبه قابل بررسی است . یکی اینکه توسعه دهنده به دلیل وجود خطاهای Run Time بهره وری بالاتری خواهد داشت و دوم اینکه شرکت های بزرگ میتوانند تیم های مجزای فرانت اند و بک اند را در یک گروه جمع کنند تا پروژه سریعتر و بهتر به نتیجه برسد .
9 - سرور Node.js بعنوان Proxy - برنامه نویسان سرور Node.js را استخدام کنید :
همانطور که قبلتر دیدیم Node.js مشخص کرد که در اکثر سیستم های مدیریت با مدت زمان پاسخگویی بسیار کمتری کاربرد دارد .به همین ترتیب Node.js می تواند برای stream کردن اطلاعات از منابع مختلف مورد استفاده قرار گیرد.
10 - پشتیبان و حمایت کننده ی Node.js
اگر شما از فریمورک های اوپن سورس استفاده کرده باشید ممکن است توسط سازندگان آزاد و داوطلب خودش رها شده باشد ولی Node.js توسط Joynet حمایت میشود .
خب ده دلیل خوب آوردیم برای اینکه Node.js را یاد بگیرید . هم اکنون شروع کنید و مطمعن باشید در مدت زمان کم میتوانید به آن مسلط شوید فقط از یک منبع خوب ، با کیفیت و ترجیحا فارسی برای شروع استفاده کنید .
امیدوارم از این مقاله لذت برده باشید
جواد یوسفی
برنامه نویس فرانت اند
دیدگاه کاربران
ثبت دیدگاه
برای ثبت نظر، ابتدا وارد شوید.
محمد عبادی پور
حتما . عالی بود مطلبتون 👍