نود جی اس چیست؟ – معرفی، اهمیت و کاربرد Node.js
در حال حاضر «جاوا اسکریپت» (Javascript) یکی از محبوبترین و بهترین زبانهای برنامه نویسی به حساب میآید و میلیونها وبسایت از این زبان محبوب برای ایجاد تعامل با کاربران خود استفاده میکنند. همچنین جاوا اسکریپت فقط به توسعه و برنامه نویسی وب محدود نمیشود و در حال حاضر طیف وسیعی از برنامهنویسان از این زبان محبوب در کاربردهای مختلفی استفاده میکنند. عمده کاربردهای جاوا اسکریپت به لطف فریمورکها و ابزارهایی است که برای این زبان در دسترس هستند. «نود جی اس» (Node.js) یکی از محبوبترین محیطهای زمان اجرای جاوا اسکریپت برای توسعه بکاند به حساب میآید. اما به بیان دقیقتر و جامعتر نود جی اس چیست و چه کاربردی دارد؟ در این مطلب آموزشی از مجله فرادرس اطلاعات کاملی در رابطه با اینکه Node js چیست ارائه شده است و کاربردها، مزایا و معایب آن مورد بررسی قرار گرفتهاند.
Node.js در واقع نوعی محیط اجرای تک رشتهای، منبع باز و «چندسکویی» (Cross Platform) است که از آن برای ساخت برنامههای کاربردی شبکه و سمت سرور استفاده میشود. برنامههای ساخته شده با Node.js بسیار سریع و مقیاسپذیر هستند. Node.js بر روی موتور جاوا اسکریپت V8 اجرا میشود و برای کاربردهای بلادرنگ گزینه بسیار مناسبی به حساب میآید. در ادامه این مقاله پاسخ کامل و جامعی برای سؤال Node.js چیست ارائه خواهد شد.
نود جی اس چیست؟
در پاسخی ساده به این سؤال که نود جی اس چیست میتوان گفت Node js نوعی محیط اجرا و کتابخانه چند پلتفرمی منبع آزاد جاوا اسکریپت برای توسعه بکاند به حساب میآید که هدف اصلی آن بیشتر اجرای برنامههای وب، خارج از مرورگر و دستگاه مشتری (برنامه نویسی سمت سرور) است. Node.js در سال 2009 توسط «رایان دال» (Ryan Dahl) توسعه یافت و نسخه آخر آن، یعنی نسخه 15.14 در سال 1400 منتشر شد.
پیش از ادامه این مبحث لازم است یادآور شویم که میتوانید Node.js را با استفاده از مجموعه آموزش نود جی اس، مقدماتی تا پیشرفته فرادرس یاد بگیرید.
نود جی اس را بیشتر به عنوان پلتفرمی برای ساخت و توسعه برنامههای سمت سرور میشناسند و به صورت کلی برای برنامه نویسی سمت سرور از آن استفاده میشود. این پلتفرم برای توسعه برنامههای فشرده و سنگین مناسب است، زیرا از رویداد ناهمزمانی در برنامه نویسی بهره میبرد و همانطور که گفته شد، برای کاربردهای بلادرنگ در توسعه وب موهبتی به حساب میآید.
نود جی اس با چه زبانی نوشته شده است؟
ممکن است برای کاربران سؤال باشد که زبان اصلی محیط زمان اجرای توسعه Node js چیست. نود جی اس به زبانهای C ،C++ و جاوا اسکریپت نوشته شده است. همچنین منبع ویکیپدیای انگلیسی، نود جی اس را جزئی از موتور جاوا اسکریپت V8 گوگل، لایه انتزاعی پلتفرم «libuv» و همچنین نوعی کتابخانه هسته تعریف میکند که عمده اینها با جاوا اسکریپت نوشته شدهاند.
نحوه کار نود جی اس چگونه است؟
تا اینجا توضیح داده شد که نود جی اس چیست و با چه زبانهایی نوشته شده است، در این بخش نحوه کار نود جی اس مورد بررسی قرار خواهد گرفت. Node.js در واقع از معماری «یک رشته چندین حلقه» (Single Threaded Event Loop) برای مدیریت همزمانی استفاده میکند. این یعنی نود جی اس روی یک رشته کار میکند و به آن اجازه خواهد داد هزاران حلقه رویداد همزمان را مدیریت کند.
برای مثال در زبان جاوا و در مدلهای درخواست و پاسخ چند رشتهای، چندین دستگاه مشتری درخواستی را به سرور ارسال میکنند و قبل از اینکه پاسخی دریافت کنند، سرور هر کدام را پردازش میکند. رشتهها برای پردازش در «استخر نخ» (Thread Pool) تعریف میشوند و هر زمانی که درخواست جدیدی وارد شد، رشتهای مجزا برای رسیدگی به درخواستها برای این کار اختصاص داده خواهد شد. نود جی اس کمی متفاوت از جاوا برای مدیریت همزمانی عمل خواهد کرد و نحوه عملکرد آن برای این کار به صورت مراحل زیر خواهد بود.
- نود جی اس مجموعه رشته محدودی را برای ارائه درخواستها حفظ میکند.
- زمانی که درخواست جدیدی وجود داشته باشد، نود جی اس آن را در صف پردازش قرار میدهد.
- حال نوبت «حلقه رویداد» (Event loop) است که این حلقه به طور نامحدود منتظر درخواستها میماند.
- هنگامی که درخواست جدیدی وارد میشود، این حلقه آن را از صف انتخاب کرده و بررسی میکند که آیا نیاز به عملیات مسدود کردن «ورودی/خروجی» (I/O) وجود دارد یا خیر؟ در غیر این صورت، درخواست را پردازش کرده و پاسخی را ارسال میکند.
- اگر درخواست ارسال شده نیاز به عملیات مسدودسازی داشته باشد، در این صورت حلقه رویداد مذکور رشتهای از «استخر نخ» (Thread Pool) داخلی را برای پردازش درخواست اختصاص میدهد.
- حلقه رویداد درخواستهای مسدود کردن را دنبال میکند و پس از پردازش کار مسدود کردن، آنها را در صف قرار میدهد. با این کار، این حلقه ماهیت غیر انسدادی خود را حفظ میکند.
نکته مهم: به دلیل اینکه نود جی اس از «نخهای» (Thread) کمتری استفاده میکند، در نتیجه به حافظه و منابع کمتری نیاز دارد و برنامههای ساخته شده با آن بسیار سریعتر خواهند بود. زمانی که نیاز به پردازش وظایف فشرده وجود داشته باشد، استفاده از زبانهای چند رشتهای مانند جاوا بسیار منطقیتر است، اما برای برنامههای بلادرنگ، Node js انتخاب بهتری به حساب میآید.
دلایل استفاده از نود جی اس چیست؟
ممکن است برای کاربر سؤال باشد که دلیل استفاده از نود جی اس چیست و چرا باید از آن استفاده کرد. دلایل زیادی برای استفاده از Node js وجود دارد که چرا از آن در توسعه برنامههای سمت سرور و بلادرنگ استفاده میشود، حال که گفته شده Node js چیست و نحوه کار آن چگونه است نوبت به دلایل استفاده از Node js رسیده است. مهمترین این دلایل در ادامه فهرست شدهاند.
- نود جی اس بر روی موتور V8 گوگل کروم ساخته شده است و به همین دلیل برنامههای ساخته شده با آن بسیار سریع اجرا میشوند.
- تاکنون بیش از ۵۰ هزار بسته در «Node Package Manager» برای این محیط ارائه شده است و به همین دلیل کار توسعهدهندگان برای کار با نود جی اس بسیار آسان خواهد بود و در زمان و هزینه آنها بسیار صرفهجویی میشود.
- به دلیل ماهیت و توانایی مدیریت ناهمزمانی، نود جی اس برای توسعه وب اپلیکیشنهای بزرگ و فشرده گزینه بسیار مناسبی به حساب میآید.
- به دلیل اینکه کد بین کلاینت و سرور همگامسازی بیشتری در نود جی اس دارد، در نتیجه زمان بارگذاری فایلهایی مانند ویدیو، صدا و غیره در آن بسیار کاهش خواهد یافت.
- از آنجایی که نود جی اس منبع آزاد است و فقط محیط زمان اجرایی برای جاوا اسکریپت به حساب میآید، در نتیجه یادگیری آن برای کسانی که قبلاً برنامه نویسی جاوا اسکریپت را کار کردهاند، بسیار آسان خواهد بود.
ویژگیهای Node js چیست ؟
در این بخش به این مسئله پرداخته خواهد شده است که مهمترین ویژگی نود جی اس چیست و چه چیزی آن را از رقبایش متمایز میکند؟ ویژگیهای زیادی وجود دارند که به نود جی اس ماهیت منحصر به فردی بخشیدهاند که عمده این ویژگیها در ادامه مورد بحث قرار خواهند گرفت. ابتدا هر یک از ويژگیهای Node.js را فهرست میکنیم و سپس در زیربخشهای جداگانه آنها را بیشتر توضیح میدهیم.
- نود جی اس ناهمزمان و رویداد محور است.
- معماری Node js تک رشتهای است.
- Node.js محیط زمان اجرایی مقیاسپذیر به حساب میآید.
- اجرای کدها در نود جی اس با سرعت بالایی انجام میشود.
- Node js با پلتفرمهای مختلف سازگاری دارد.
- Node.js مبتنی بر زبان قدرتمند جاوا اسکریپت است.
- پردازش دادهها در نود جی اس سرعت بالایی دارد.
قابلیت ناهمزمانی و رویداد محور بودن در Node js
اولین و مهمترین پاسخ در رابطه با این سؤال که برجستهترین ویژگی نود جی اس چیست را میتوان ناهمزمانی و رویداد محور بودن آن دانست. این یعنی سرورهای توسعه داده شده با Node js هرگز منتظر «API» نمیمانند و بدون اینکه انتظار دادههای API را بکشند به صورت مستقیم به API بعدی منتقل میشوند. این یعنی تمام APIهای Node js ماهیتی کاملاً غیر مسدود کننده دارند. نود جی اس همچنین به منظور ردیابی و دریافت پاسخ از درخواستهای API قبلی که منتظر آنها نمانده است از ساز و کاری رویداد محور استفاده میکند و این هم یکی دیگر از دلایلی است که میتوان گفت نود جی اس ماهیتی کاملاً غیر مسدود کننده دارد.
معماری تک رشتهای در Node.js
بهره بردن از معماری تک رشتهای، نود جی اس را بسیار مقیاسپذیرتر میکند. این یعنی برخلاف سایر سرورهای توسعه داده شده با ابزارهای دیگر، در نود جی اس رشتههای محدودی برای پردازش درخواستها ایجاد میشود. همچنین به دلیل اینکه، سرورهای Node js به صورت غیر مسدود کننده یا ناهمزمان به درخواستها پاسخ میدهند، در نتیجه نود جی اس بسیار مقیاسپذیرتر میشود. همچنین در مقایسه با سرورهای سنتی (سرورهای «HTTP Apache)، میتوان گفت که Node js تعداد بیشتری از درخواستها را مدیریت میکند.
مقیاس پذیری بالای نود جی اس
نیاز به نرمافزارهای مقیاسپذیر امروزه بیش از هر زمان دیگری در شرکتها و سازمانها احساس میشود، چیزی که نود جی اس در توسعه آنها یکی از بهترین ابزارهای موجود به حساب میآید. در نود جی اس درخواستهای همزمان بسیار سریع پردازش میشوند.
همچنین در Node js از ماژول «پردازش خوشهای» (Cluster Process) برای مدیریت تعادل بار در تمام هستههای فعال CPU استفاده میشود. علاوه بر این، نود جی اس میتواند برنامهها را به صورت افقی پارتیشنبندی کند که با استفاده از این ویژگی، نسخههای متفاوتی از برنامه در اختیار کاربران هدف قرار میگیرد. این ویژگی، اصل مقیاسپذیری و قابلیت سفارشیسازی را به دنبال دارد.
اجرای سریع کدها در Node js
همانطور که گفته شده در نود جی اس از موتور V8 جاوا اسکریپت استفاده میشود که این موتور در مرورگر گوگل کروم نیز تعبیه شده است. در هسته جاوا اسکریپت، «Wrapper» به عنوان هاب در نظر گرفته شده و به همین دلیل موتور جاوا اسکریپت بسیار سریع است. در نتیجه میتوان به دلایل بیان شده گفت که در Node js فرایند رسیدگی به درخواستها نیز سریعتر انجام میشود. اصطلاح Wrapper به برنامهها یا کدهایی گفته میشود که دربرگیرنده سایر اجزای برنامه هستند.
سازگاری با پلتفرم های مختلف در Node.js
یکی از ویژگیهای برجسته دیگر نود جی اس، سازگاری آن با پلتفرمهای مختلف است. انواع پلتفرمهای فعال حال حاضر دنیا مانند سیستم عامل ویندوز، یونیکس، لینوکس، مک و سایر دستگاههای تلفن همراه میتوانند از Node js استفاده کنند و این قابلیت بیش از پیش به محبوبیت نود جی است افزوده است.
نود جی اس محیط زمان اجرای مبتنی بر جاوا اسکریپت
از دیدگاه برنامهنویسان و توسعهدهندگان این ویژگی بسیار حائز اهمیت است، زیرا اکثر توسعهدهندگان با جاوا اسکریپت آشنا هستند و از آن در سطح وسیعی برای برنامه نویسی سمت کلاینت استفاده میکنند، بنابراین یادگیری Node js برای آنها بسیار آسانتر است.
پردازش سریع داده ها در Node js
زمان لازم برای پردازش دادهها در جریانهای مختلف، بسیار قابل توجه و زیاد به حساب میآید و این ایراد در نود جی اس به خوبی بر طرف شده است. صرفهجویی در پردازش دادهها و انجام سریع این فرایند یکی از ویژگیهای برتر نود جی اس به حساب میآید که آن را برای توسعه برنامههای سنگین و داده محور مبتنی بر وب به ابزاری بسیار کارآمد تبدیل کرده است. به صورت کلی Node js در زمان پردازش و بارگذاری صرفهجویی میکند، زیرا فایلها به طور همزمان به وسیله Node js پردازش و آپلود میشوند.
کاربرد نود جی اس چیست؟
یکی دیگر از مباحث مهم پیرامون پرسش نود جی اس چیست پرداختن به این مسئله است که کاربرد نود جی اس چیست و برای چه مواردی از نود جی اس استفاده میشود. Node.js برای طیف گستردهای از برنامهها مورد استفاده قرار میگیرد که عمده این کاربردها در این بخش فهرست شدهاند.
- کاربرد نود جی اس در پیادهسازی قابلیت گفتگوی بلادرنگ: به دلیل اینکه نود جی اس ماهیت ناهمزمان و تک رشتهای دارد، بنابراین برای پردازش ارتباطات بلادرنگ بسیار گزینه مناسبی به حساب میآید. دو ویژگی مقیاسپذیری و سرعت پردازش در این برنامهها از اهمیت بالایی برخوردار هستند که نود جی اس آنها را به خوبی میسر میسازد. به همین دلیل، امروزه از نود جی اس در ساخت چتباتها، پیامرسانها و مواردی از این دست به وفور استفاده میشود.
- «اینترنت اشیا» (Internet of Things | IoT): بیشتر برنامههای اینترنت اشیا دارای حسگرهایی هستند که این حسگرها مشغول به دریافت و انتقال دادهها خواهند بود و ممکن است درخواستهای بسیار زیادی به آنها ارسال شود. برای این هدف، نود جی اس انتخاب مناسبی به حساب میآید، زیرا میتواند این درخواستهای همزمان را به سرعت مدیریت کند.
- پخش جریانی دادهها با Node js: شرکتهایی مانند (Netflix) از نود جی اس برای اهداف پخش ویدیو استفاده میکنند. این انتخاب آنها بیشتر به ویژگی سبُک و سریع بودن نود جی اس باز میگردد. همچنین در کنار همه اینها، نود جی اس از نوعی API جریان بومی بهره میبرد. این جریانها به کاربران اجازه میدهند تا درخواستهای خود را به یکدیگر ارسال کنند و در نتیجه دادهها مستقیماً به مقصد نهایی خود منتقل میشوند.
- توسعه آسان برنامههای تکصفحهای (Single Page Applications) با Node.js: در برنامههای تکصفحهای که به اختصار برنامههای SPA نامیده میشوند، کل برنامه در یک صفحه بارگذاری میشود که در بکاند آن چندین درخواست به صورت همزمان برای مؤلفههای خاص آن برنامه ارسال میشود. اینجا جایی است که حلقه رویداد نود جی اس وارد ماجرا میشود و به کمک برنامه میآید.
- ساخت برنامههای مبتنی بر API REST با نود جی اس: امروزه زبان جاوا اسکریپت هم در قسمت «بکاند» (Backend) و هم در «فرانتاند» (Frontend) سایتها استفاده میشود. بنابراین، سرور میتواند به راحتی با استفاده از نود جی اس از طریق APIهای REST با فرانتاند ارتباط برقرار کند. همچنین نود جی اس بستههایی مانند Express.js و Koa را هم ارائه میدهد که این قابلیت باعث میشود ساخت برنامههای وب آسانتر شود.
در ادامه به معماری Node js پرداختهایم، اما پیش از آن به طور خلاصه مجموعه دورههای آموزش جاوا اسکریپت فرادرس به مخاطبان پرسش نود جی اس چیست معرفی شده است.
معرفی فیلم های آموزش جاوا اسکریپت
جاوا اسکریپت به عنوان زبانی سطح بالا نقش بسزایی در اینترنت امروزی به عهد دارد و در واقع یکی از چند ستون اصلی اینترنت امروزی است. در پلتفرم فرادرس فیلمهای آموزشی زیادی برای جاوا اسکریپت موجود هستند که مباحث گوناگونی پیرامون جاوا اسکریپت را پوشش میدهند. از مباحث ابتدایی و مقدماتی جاوا اسکریپت گرفته تا مباحث پیشرفته و حرفهای، آموزش جاوا اسکریپت در فرادرس موجود هستند. همچنین در پلتفرم فرادرس آموزش بیشتر فریمورکهای جاوا اسکریپت نیز وجود دارد که آموزش نود جی اس یکی از مهمترین آنها به حساب میآید.
در زمان نگارش این مطلب بیش از 20 عنوان آموزشی پیرامون مباحث جاوا اسکریپت و نود جی اس در فرادرس ارائه شده است که بالغ بر 114 ساعت محتوا در قالب فیلم آموزشی را شامل میشوند. یادگیری جاوا اسکریپت امروزه از اهمیت بالایی برخوردار است، زیرا بیشتر شرکتهای بزرگ و کوچک دنیا به سمت دیجیتالی شدن پیش خواهند رفت و نیاز به متخصصین این زبان بر اساس این رویکرد همچنان در حال افزایش خواهد بود. در تصویر بالا تنها تعداد کمی از دورههای آموزشی جاوا اسکریپت به عنوان نمونه نمایش داده شده است.
- برای مشاهده همه فیلمهای آموزش جاوا اسکریپت و شروع یادگیری + اینجا کلیک کنید.
معماری نود جی اس به چه صورت است؟
یکی دیگر از مباحث هم در رابطه با پرسش نود جی اس چیست در این مطلب، بررسی معماری نود جی اس و اجزای مختلف آن است. همانطور که گفته شد، Node.js روی یک رشته کار میکند و به آن اجازه میدهد هزاران حلقه رویداد همزمان را مدیریت کند. به صورت کلی، نود جی اس از اجزای مختلفی تشکیل شده است که این اجزا در ادامه فهرست شدهاند.
- «ماژول» (Modules)
- «میز فرمان» (کنسول | Console)
- «خوشه» (Cluster)
- «اشیای سراسری» (Global Object)
- «رسیدگی به خطا» (Error Handling)
- «تحویل جریانی داده» (استریم | Stearming)
- «بافر» (Buffer)
- «دامنه» (Domain)
- DNS
- «اشکال یاب» (دیباگر | Debugger)
سیستم ماژولار نود جی اس چیست؟
ماژولها در نود جی اس همان کتابخانههای جاوا اسکریپت هستند که میتوانند مجموعهای از توابع را در خود بگنجانند و این توابع در جاوا اسکریپت در قسمتهای مختلفی از برنامه مورد استفاده قرار میگیرند. به منظور گنجاندن یک ماژول در برنامه Node.js، از تابع require() استفاده میشود که در داخل پرانتز باید نام ماژول مورد نظر را قرار داد. نود جی اس ماژولهای بسیاری زیادی دارد که قابلیت پیادهسازی عملکردهای برنامههای وب را دارند. تعدادی از مهمترین ماژولها در نود جی اس در ادامه فهرست شدهاند:
- Http
- Util
- Fs
- Url
- Querysting
- Stream
- Zlib
- و سایر موارد
کنسول در Node js چیست ؟
کنسول نوعی ماژول در نود جی اس است که روشی را برای دیباگ کردن ارائه میدهد. کنسول نود جی اس تقریباً مانند کنسول اصلی جاوا اسکریپت ارائه شده و به وسیله مرورگرهای اینترنتی مختلفی پشتیبانی میشود. کنسول پیامها را به صورت stdout و stderr چاپ میکند.
کلاستر در Node.js چیست ؟
همانطور که گفته شد، Node.js بر اساس مفهوم برنامه نویسی تکرشتهای توسعه یافته است، اما کلاستر در نود جی اس چیست؟ میتوان گفت که کلاستر ماژولی به حساب میآید که هدف آن ایجاد فرآیندهای فرزند در پورتهایی با سرور یکسان است که قابلیت چند رشتهای را فراهم میکند. کلاستر را میتوان به صورت زیر به برنامه اضافه کرد:
1var cluster = require('cluster');
2
3if (cluster isWorker) {
4
5 console.log(thild thread'); } else {
6
7 console.log(`Parent thread');
8
9 cluster.fork();
10
11 cluster.fork();
12
13}
اشیای سراسری در نود جی اس چه هستند؟
اشیای سراسری در نود جی اس در همه ماژولها در دسترس هستند. این اشیا میتوانند شامل مواردی مانند توابع، ماژول، رشته و غیره باشند که برخی از مهمترین آنها به صورت موارد زیر است.
- _dirname
- _filename
- Exports
- Moudle
- Require
رسیدگی به خطا در Node.js چگونه انجام می شود؟
برنامههای Node.js چهار نوع باگ یا خطا را تجربه میکنند که انواع این خطاها به صورت موارد زیر است:
- خطای استاندارد جاوا اسکریپت
- خطای سیستمی
- خطای کاربر خاص
- خطای ادعا
خطاها در Node.js به وسیله استثناها کنترل میشوند. برای مثال، خطایی که هنگام تقسیم عدد بر صفر اتفاق میافتد را در نظر بگیرید، این خطا برنامه Node.js را از کار میاندازد. بنابراین باید این خطا به گونهای مدیریت شود که برنامه بتواند به کار خودش ادامه دهد.
1try {
2
3var rn =1:
4
5var n = 1/0;
6
7}
8
9catch (err) {
10
11 // Handling the error here.
جریان در Node js چیست ؟
جریان به نوعی شی اطلاق میشود که اجازه خواندن و نوشتن داده را به صورت مداوم میدهد. در علوم و مهندسی کامپیوتر «جریان» (استریم | Stream) به معنی تحویل صوت و تصویر در زمان واقعی یا زمان بیدرنگ است. در کل چهار نوع جریان وجود دارد که فهرست آنها به شرح موارد زیر است.
- خواندنی: جریانهایی را که داده را میتوان از آنها خواند.
- نوشتنی: جریانهایی که دادهها را میتوان روی آنها نوشت.
- «دوتایی» (دوبلکس | Duplex): جریانهای با قابلیت همزمان خواندن و نوشتن هستند.
- تبدیلی: جریانهایی با قابلیت دستکاری در عین خواندن و نوشتن به حساب میآیند.
بافر در Node js چیست ؟
بافر به ماژولی گفته میشود که امکان مدیریت جریانهایی را فراهم میکند که فقط حاوی دادههای باینری هستند. برای مثال، بافر خالی با طول ١٠ به صورت زیر ایجاد میشود:
1 Var.buf = Buffer.alloc(10);
ماژول دامنه در نود جی اس
ماژول دامنه خطاهایی را رهگیری میکند که کنترل نشده باقی میمانند. برای رهگیری این خطاها از دو روش استفاده میشود:
- Internal Binding: Error Emitter: کد را در متد run اجرا میکند.
- External Binding: ارسال کننده خطا به صراحت از طریق روش افزودن، به دامنه اضافه میشود.
ماژول DNS در نود جی اس
این ماژول برای اتصال به سرور DNS و انجام عمل تفکیک نام دامنه به صورت زیر استفاده میشود:
1dns.resolve()
ماژول DNS در نود جی اس همچنین برای استفاده از قابلیتهای وضوح نام سیستم عامل بدون نیاز به ارتباط شبکه به صورت زیر استفاده میشود.
1dns.lookup()
دیباگر در نود جی اس
شاید برای کاربر سؤال باشد که نقش دیباگر در نود جی اس چیست؟ محیط نود جی اس خود شامل نوعی ابزار اشکالزدایی است که میتوان به وسیله سرویس گیرنده اشکالزدایی داخلی به آن دسترسی پیدا کرد. دیباگر نام برده شده، اگرچه بسیار حرفهای نیست و ویژگیهای منحصر به فردی ندارد، اما از بازرسی ساده کدها پشتیبانی میکند. برای استفاده از این دیباگر کافی است از کلمه Inspect قبل از نام جاوا اسکریپت در ترمینال استفاده کنیم. برای مثال به منظور بررسی فایلی به نام Myscript.js ، دیباگر مانند مثال زیر به کار گرفته میشود:
1$ node inspect myscript.js
پکیج اکسپرس در نود جی اس چیست و چه کاربردی دارد؟
«Express»، نوعی فریمورک مختص توسعه وباپلیکیشن برای نود جی اس است که انعطافپذیری بالایی دارد و در عین حال مجموعه گستردهای از ویژگیهای مهم را برای توسعه وباپلیکیشن و برنامههای کاربردی موبایل ارائه میدهد. میتوان گفت که Express در واقع به یک لایه ساخته شده در بالای نود جی اس اشاره دارد که برای مدیریت سرورها و مسیرها مفید است.
برخی از ویژگیهای اصلی چارچوب Express به صورت فهرست موارد زیر است:
- اکسپرس برای طراحی وب اپلیکیشن تکصفحهای، چندصفحهای و ترکیبی مورد استفاده قرار میگیرد.
- این فریمورک به توسعهدهندگان اجازه میدهد تا میانافزارهایی را برای پاسخ به درخواستهای HTTP پیادهسازی کنند.
- Express نوعی جدول مسیریابی را تعریف میکند که برای انجام اقدامات مختلف بر اساس روش HTTP و URL مفید هستند.
- و سایر موارد
مثال Hello World از کاربرد فریمورک اکسپرس در نود جی اس به صورت زیر است:
1var express = require('express');
2var app = express();
3app.get('/', function (req, res) {
4 res.send('Hello World'); })
5var server = app.listen(8081, function (){
6 var host = server.address().address
7 var port = server.address().port
8console.log("Example app listening at http://%s:%s", host, port)
9})
توضیحات لازم برای قطعه کد بالا در ادامه فهرست شده است.
- var express : برای وارد کردن چارچوب Express به برنامه نود جی اس از آن استفاده میشود.
- get() : نوعی تابع Callback با پارامترهای request و response است.
- شی درخواست (Request Object): این شی درخواست HTTP را نشان میدهد و دارای ویژگیهایی مانند رشته پرسوجو درخواست، بدنه درخواست (Body)، هدرهای HTTP و غیره است.
- شی پاسخ (Response Object): این شی نشان دهنده پاسخ HTTP است که برنامه Express هنگام دریافت درخواست HTTP آن را ارسال میکند.
- در این مثال، برنامه به پورت تعریف شده گوش میدهد که پورت آن 8081 است و متغیرهای Host و Port نیز به ترتیب حاوی آدرس و پورت خواهند بود.
- console.log : این بخش برای نشان دادن آدرس و پورت در خط فرمان یا ترمینال استفاده میشود.
آیا Node.js یک زبان برنامه نویسی است؟
در پاسخی کوتاه باید گفت خیر؛ نود جی اس نوعی زبان برنامه نویسی به حساب نمیآید و در واقع نوعی محیط اجرا است که به کاربر اجازه استفاده از جاوا اسکریپت در خارج از مرورگر و سمت سرور را میدهد. همچنین نود جی اس فریمورک یا چارچوب هم به حساب نمیآید ولی کاربران و توسعهدهندگان عادت کردهاند که به آن فریمورک بگویند، در حالی نود جی اس محیطی است که به اجرای فریمورکها کمک میکند. به صورت کلی میتوان گفت که Node.js نه زبان برنامه نویسی است و نه فریمورک، بلکه محیطی برای اجرای آنها به حساب میآید.
آیا نود جی اس در بک اند استفاده میشود یا در فرانت اند؟
یکی از تصورات رایج و غلطی که در مورد نود جی اس وجود دارد این است که این محیط فقط برای کاربردهای بکاند قابلیت استفاده را دارد در حالی که این محیط هم برای بکاند و هم برای فرانتاند مورد استفاده قرار میگیرد.
همانطور که گفته شد، ماهیت مقیاسپذیری و انعطافپذیری این محیط به علت رویداد محور بودن و خاصیت غیر مسدود کنندگی، انتخاب خوبی برای «توسعهدهنده بکاند» (Back-End Developer) است. ولی با اینحال، نود جی اس برای «توسعهدهنده فرانتاند» (Front-End Developer) نیز ویژگیها و مزایای خاص خودش را دارد. برخی از مزایای نود جی اس در بخش بکاند و فرانتاند به صورت فهرست موارد زیر است:
- قابلیت استفاده مجدد: جاوا اسکریپت نوعی زبان برنامه نویسی است که هم در بکاند و هم در فرانتاند توسط فریمورکهایی مانند «Meteor.js» مورد استفاده قرار میگیرد. در این میان، بعضی از پشتههای محبوب مانند «MERN» از Express.js به عنوان نوعی چارچوب بکاند استفاده خواهند شد. همچنین چندین «Component» (کامپوننت) را میتوان به صورت مشترک فرانتاند و بکاند استفاده کرد.
- بهرهوری و کارایی: با توجه به قابلیت کاهش تغییر متن بین زبانهای مختلف با استفاده از نود جی اس، در زمان و هزینه توسعهدهندگان صرفهجویی قابلتوجهی اتفاق میافتد، از این رو قابلیت استفاده همزمان نود جی اس در بکاند و فرانتاند موجب افزایش کارایی و بهرهوری میشود، زیرا ابزارهای زیادی برای هر دو مشترک هستند.
- انجمن پشتیبانی بزرگ: جامعه آنلاین و انجمن پشتیبانی بزرگ، باعث رشد و رونق چرخه توسعه میشود. این قابلیت برای نود جی اس به خوبی خودش را نشان داده است و هماکنون جامعه پشتیبان و فعالی برای آن وجود دارد.
نحوه نصب و راه اندازی نود جی اس چگونه است؟
تا اینجا توضیحاتی در رابطه با اینکه نود جی اس چیست و چه کاربردی دارد و بسیاری از موارد دیگر در این مطلب ارائه شد. در ادامه، نحوه نصب و نحوه کار با نود جی اس پوشش داده شده است. نحوه نصب نود جی اس در پلتفرمهای مختلف بسیار ساده است که در زیر آموزش داده میشود.
آموزش نصب نود جی اس در مک
نصب Node.js در سیستم عامل مک به دو روش زیر قابل انجام است:
- روش اول: برای نصب نود جی اس روی کامپیوتر مک کافی است که از طریق Bash دستور زیر اجرا شود:
1curl "https://nodejs.org/dist/latest/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nE 's|.*>node-(.*).pkg.*|1|p')}.pkg" > "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"
- روش دوم: استفاده از Homebrew در مک برای نصب نود جی اس:
1brew install node
دانلود نود جی اس و نصب آن در ویندوز به چه صورت است؟
برای نصب نود جی اس در ویندوز کافی است که از طریق سایت اصلی نود جی اس آن را دانلود کرده و همانند نصب نرم افزار معمولی، نود جی اس را نصب کرد.
- لینک دانلود نود جی اس برای ویندوز [+]
آموزش نصب نود جی اس در لینوکس
برای نصب نود جی اس در لینوکس باید به صورت زیر عمل کرد. مثلا در اوبونتو 18.4 به بالا، نود جی اس با اجرای دستورات زیر در ترمینال لینوکس، نصب خواهد شد.
1sudo apt update
2sudo apt install nodejs
بررسی نسخه Node.js
ممکن است کاربر بخواهد نسخه نود جی اس خود را بررسی کند. برای این کار کافی است که دستورات زیر را در ترمینال یا خط فرمان سیستم عامل خود وارد کند.
1node -v
2or
3node --version
در صورتی که نود جی اس با موفقیت روی سیستم نصب شده باشد، پس از اجرای دستورات فوق، خروجی چیزی شبیه به این خواهد بود. بسته به نسخهای که نصب شده است، خروجی ممکن است فرق کند.
v14.16.0
NPM در Node js چیست؟
ممکن است پیرامون مباحث نود جی اس، کاربران با اصطلاحی به نام «NPM» برخورد کرده باشند، اما NPM در نود جی اس چیست و برای چه مواردی استفاده میشود؟ NPM زیستبوم بستهها و کتابخانههای نود جی اس است و یکی از بزرگترین زیستبومها در میان همه کتابخانههای منبع آزاد دنیا به حساب میآید. این کتابخانه بیش از یک میلیون بسته دارد و همچنان در حال رشد است. استفاده از NPM رایگان است و روزانه هزاران برنامهنویس به رشد آن کمک میکنند.
NPM در واقع نوعی ابزار خط فرمان به حساب میآید که به سادگی با مراجعه به وبسایت رسمی آن میتوان بسته مدنظر را جستجو و با استفاده از یک دستور آن را نصب کرد. همچنین با این ابزار محبوب، کاربران قادر خواهند بود بستههای خود را مدیریت، وابستگیها را بررسی و حتی اسکریپتهای سفارشی خود را در آن تنظیم کنند.
نصب بسته NPM از طریق CLI
زمانی که نود جی اس نصب میشود، به صورت خودکار ابزار NPM نیز به همراه آن نصب خواهد شد. مباحث مربوط به نحوه نصب نود جی اس در بالا ارائه شدند و در این بخش آموزش نصب بستههای NPM شرح داده شده است. دستور نصب بسته در NPM به صورت زیر خواهد بود.
1npm install <package-name>
نحوه نصب بسته در NPM به همین راحتی است و حتی میتوان چندین بسته را همزمان باهم تنها با یک دستور نصب کرد، مانند دستور زیر:
1npm install <pkg-1> <pkg-2> <pkg-3>
همچنین میتوان برای نصب ماژول یا بسته سراسری از پرچم یا نشانهg به معنی «Global» یا همان سراسری به همراه نصب آن استفاده کرد. این کار به کاربران این امکان را میدهد تا از بسته در سراسر کدهای خود استفاده کند. همچنین زمانی که برنامه جدیدی مقداردهی اولیه میشود، NPM به صورت خودکار فایلی به نام Package.json برای آن ایجاد میکند که حاوی تمام بستههای NPM است و در آن میتوان نسخهها، وابستگیها و اسکریپتهای سفارشی را مشخص کرد. همچنین فهرستی طولانی از دستورات همراه با ابزار NPM وجود دارد که کاربران میتوانند برای اهداف مختلفی از آن استفاده کنند.
بستههای محبوب NPM کدامند؟
بستههای زیادی در NPM وجود دارند که برای توسعهدهندگان از اهمیت بالایی برخوردار هستند. برخی از محبوبترین این بستهها در ادامه فهرست شدهاند.
- Express: اکسپرس نوعی چارچوب توسعه وب الهام گرفته شده از Sinatra-inspired برای Node.js و استاندارد واقعی برای اکثر برنامههای Node.js امروزی است.
- MongoDB: این بسته درایور رسمی API را برای پایگاه دادههای «مونگو دی بی» (MongoDB) در Node.js فراهم میکند.
- Io: این بسته سوکت ارتباطات بیدرنگ است و ارتباط دوطرفه و مبتنی بر رویداد را فعال میکند.
- Lodash: به منظور سادهسازی کد نویسی Lodash توسعه داده شده است و دردسر کار با آرایهها، اعداد، اشیا، رشتهها و غیره، جاوا اسکریپت را آسانتر میکند.
- Moment: این بسته در NPM نوعی کتابخانه تاریخ جاوا اسکریپت برای تجزیه، اعتبارسنجی، دستکاری و قالببندی تاریخها است.
- Commander.js: این بسته برای کار با رابط خط فرمان برای node.js توسعه داده شده است.
- Forever: این بسته نوعی ابزار ساده CLI است که برای اطمینان از اجرای مداوم یک اسکریپت داده شده، توسعهیافته است و فرآیند اجرای js را در مواجهه با هرگونه خرابی غیرمنتظره در حال تولید نگه میدارد.
- Async: ماژولی ساده و قدرتمند برای کار با جاوا اسکریپت ناهمگام است.
- Redis: نوعی کتابخانه سمت کلاینت برای پشتیبانی از یکپارچهسازی پایگاه داده Redis به حساب میآید.
- Mocha: نوعی چارچوب انعطافپذیر تست برای جاوا اسکریپت و نود جی اس و مرورگر است.
- Passport: این بسته قابلیت احراز هویت آسان و بدون مزاحمت برای نود جی اس را فراهم میکند.
مثالی ساده با نود جی اس
در این بخش از مطلب نود جی اس چیست مثالی ساده و عملی با نود جی اس ارائه میشود تا کاربر بهتر درک کند که نود جی اس چیست و چگونه عمل میکند. مثال ارائهشده، «Hello Faradars» خواهد بود و به عنوان خروجی نود جی اس در پاسخ به درخواست سرور نود جی اس ساخته شده به کاربر بازمیگردد. ابتدا باید «ویرایشگر کد» (کد ادیتوری Code Editor) مناسب را برای این کار انتخاب کرده و پروژه را آغاز کرد. کدی که برای این مثال ارائه میشود به صورت زیر است.
1// server.js
2const http = require('http');
3
4const hostname = '127.0.0.1';
5const port = 3000;
6
7const server = http.createServer((req, res) => {
8 res.statusCode = 200;
9 res.setHeader('Content-Type', 'text/plain');
10 res.end('Hello Faradars! Welcome to Node.js');
11});
12
13server.listen(port, hostname, () => {
14 console.log(`Server running at http://${hostname}:${port}/`);
15});
این فایل باید با نام و پسوند server.js ذخیره شود. حال میتوان با استفاده از ترمینال و با دستور زیر، سرور را راه اندازی کرد:
1node server.js
سرور هماکنون راه اندازی میشود. برای اطمینان از راه اندازی سرور باید آدرس «http://localhost:3000» در مرورگر باز شود. کاربر پیامی مانند پیام زیر را دریافت میکند.
Hello Faradars! Welcome to Node.js
توضیحات در مورد سرور نود جی اس بالا
نود جی اس شامل ماژولی داخلی به نام HTTP است که به Node.js اجازه میدهد تا دادهها را از طریق پروتکل انتقال متن HyperText (HTTP) منتقل کند. در کد بالا، ابتدا ماژول HTTP در برنامه بارگذاری میشود و سپس از متد CreateServer برای پذیرش درخواست و بازگشت پاسخ با کد وضعیت استفاده خواهد شد. در نهایت، برنامه به پورت تعریف شده گوش میدهد و اجرا میشود.
ساخت سرور با استفاده از اکسپرس در نود جی اس
سرور مسئول دریافت و پاسخ درخواستهای مشتری از طریق نرمافزارهای خود است. نرمافزارهایی مانند «َآپاچی | Apache» یا «Nginx» برای این هدف مورد استفاده قرار میگیرند. همانطور که گفته شد، Express فریمورکی است که برای ساخت سرورهای نود جی اس به توسعهدهندگان بسیار کمک میکند. Express.js برای ساخت وب اپلیکیشن و حتی برنامههای موبایل نیز کاربرد دارد و انعطافپذیری بالایی را ارائه میدهد. Express با وارد کردن دستور زیر در ترمینال نصب خواهد شد:
1npm install express --save
مثالی از اکسپرس در نود جی اس برای ساخت وب سرور
در مثال قبل از برنامه Http داخلی برای ایجاد سرور استفاده شد. حال در این مرحله، یک سرور «Hello Faradars» با استفاده از Express.js ایجاد خواهد شد، همانند مثال قبل، با استفاده از کد ادیتوری مناسب، قطعه کد زیر را نوشته و در فایلی با نام و پسوند server-express.js باید ذخیره شود.
1const express = require('express')
2const app = express() // initialize app
3const port = 3000
4
5// GET callback function returns a response message
6app.get('/', (req, res) => {
7res.send('Hello Faradars! Welcome to Node.js')
8})
9
10app.listen(port, () => {
11console.log(`Server listening at http://localhost:${port}`)
12})
حال لازم است دستور زیر را در ترمینال وارد کنیم تا سرور شروع به کار کند.
1node server-express.js
برای مشاهده خروجی باید آدرس http://localhost:3000 در مروگر باز شود که خروجی آن به صورت زیر خواهد بود.
Hello Faradars! Welcome to Node.js
برای یادگیری نحوه ساخت وب سرور با نود جی اس پیشنهاد میشود مطلب زیر را مطالعه کنید.
چه شرکت هایی از Node js استفاده می کنند؟
بسیاری از شرکتهای معروف و محبوب دنیا از نود جی اس استفاده میکنند. شرکتهای زیر همگی در زیر ساخت خود از نود جی اس بهره میبرند:
- «ناسا» (NASA)
- «ترلو» «Trello)
- «نتفلیکس» (Netflix)
- «پیپال» (PayPal)
- «لینکدین» (LinkedIn)
- «ولمارت» (Walmart)
- «اوبر» (Uber)
- «تویتر» (Twitter)
- «یاهو» (Yahoo)
- «ای بی» (eBay)
- سایر موارد
این شرکتها تنها چندین مورد از شرکتهای معروفی هستند که از نود جی اس استفاده میکنند.
استفاده نتفلیکس از نود جی اس
نتفلیکس به عنوان یکی پیشروترین شبکههای سرگرمی آنلاین جهان با بیش از 167 میلیون کاربر، یکی از بزرگترین شرکتهایی است که از نود جی اس استفاده میکند. نتفلیکس به دو دلیل زیر از نود جی اس را انتخاب کرده است:
- مقیاسپذیری بالای برنامههای توسعه داده شده با نود جی اس
- قابلیت پخش جریانی بدون افت کیفیت با Node js
استفاده شرکت Walmart از Node.js
طبق آمار و ارقام، شرکت «Walmart» یکی از بزرگترین شرکتهای حال حاضر دنیا از لحاظ درآمد است و به دو دلیل زیر از نود جی اس استفاده میکند:
- ورودی/خروجی ناهمزمان
- رسیدگی مؤثر به درخواستهای همزمان
دلایل استفاده شرکت اوبر از Node js چیست؟
اوبر نیز شرکتی چند ملیتی است که در ایالات متحده واقع شده و خدمات مسافربری اینترنتی و تحویل غذا را ارائه میدهد. اوبر به دو دلیل زیر از نود جی اس استفاده میکند.
- ورودی/خروجی ناهمزمان
- تکرار سریع
- منبع آزاد بودن
- انجمن و جامعه پشتیبان فعال
چرا شرکت ناسا از نود جی اس استفاده می کند؟
ناسا، آژانس مستقل دولت فدرال ایالات متحده است. این شرکت مسئولیتهایی مانند برنامه فضایی غیرنظامی و همچنین تحقیقات هوافضا و هوانوردی را به عهده دارد. ناسا نیز به دلایل زیر از Node.js استفاده میکند:
- کاهش زمان دسترسی
- توانایی انجام کارهایی که دادههای فشرده و سنگین دارند.
- قابلیت فعال نگاه داشتن سرور به صورت 24 ساعته در ۷ روز هفته
علت های استفاده شرکت پی پال از Node.js چیست ؟
پیپال نیز شرکتی مستقر در ایالات متحده است و نوعی سیستم پرداخت آنلاین جهانی را اداره میکند که قابلیت انتقال پول را به صورت آنلاین به مشتریان خود ارائه میدهد. این شرکت نیز دلایل انتخاب نود جی اس را به صورت موارد زیر بیان کرده است.
- زمان ساخت بسیار سریع
- حجم کدنویسی کمتر
- توانایی مدیریت حجم زیادی از دادهها
چرا شرکت مدیوم از نود جی اس برای توسعه زیرساخت خود استفاده میکند؟
«Medium» نوعی پلتفرم انتشار محتوای متنی آنلاین است که توسط «ایوان ویلیامز» (Evan Williams) توسعه یافته و در ماه اوت 2012 راه اندازی شد. دلایلی که مدیوم نود جی اس را برای شرکت خود انتخاب کرده در ادامه آمده است.
- برنامههای کاربردی داده محور
- امکان اجرای تستهای A/B
- تعمیر و نگهداری ساده سرور
چه زمانی استفاده از نود جی اس مناسب نیست؟
در بیشتر مواقع استفاده از نود جی اس مزایای خاص خودش را دارد و با این حال موقعیتهای و کاربردهایی نیز وجود دارند که باید برای آن جایگزینی دیگری پیدا کنید. برخی از مهمترین مواردی که ممکن است نود جی اس برای آنها ایده خوبی نباشد در ادامه فهرست شدهاند.
- برنامههای کاربردی با محاسبات سنگین سمت سرور: به دلیل اینکه نود جی اس فقط از یک هسته CPU استفاده میکند، محاسبات سنگین روی سرور همه درخواستهای دیگر را مسدود میکند. در این حالت، مدل I/O غیر مسدودکننده رویداد محور که قویترین نقطه Node.js است کاملاً بیفایده میشود و عملکرد برنامه آسیب میبیند.
- برنامههای کاربردی CRUD: برای این مورد، استفاده از نود جی اس موجب عملکرد ضعیف نمیشود، ولی اگر برنامههای کاربردی «CRUD» با داده مستقیم از سرور راه اندازی شده باشند و نیاز به واکشی دیتا از API نداشته باشند، استفاده از نود جی اس زیادهروی به حساب میآید.
- برنامههای کاربردی وب سمت سرور با پایگاه دادههای رابطهای: به این دلیل که ابزارهای پایگاه داده رابطهای آن به اندازه ابزارهای ایجاد شده برای سایر پلتفرمها پیشرفته نیستند، در نتیجه نود جی اس عملکردی ضعیف را ارائه میدهد. با این حال، اخبار اخیر پیرامون نود جی اس حاکی از آن است که آخرین نسخه «Sequelize ORM» احتمال دارد این شکاف را پر کند و امکان استفاده از Node js را با پایگاه دادههای رابطهای فراهم کند.
سخن پایانی
در این مطلب آموزشی از مجله فرادرس در رابطه با اینکه نود جی اس چیست، چه کاربردی دارد، مزایای Node js چیست و بسیاری از جنبههای مختلف آن توضیحات جامعی ارائه شد. نود جی اس نوعی محیط اجرا است که امکان استفاده از جاوا اسکریپت را خارج از مرورگر برای توسعهدهندگان فراهم میکند و با این حال، برخی از افراد بیشتر آن را به عنوان چارچوبی برای جاوا اسکریپت میشناسند که در اصل این گونه نیست.
جاوا اسکریپت هم در بکاند و هم در فرانتاند کاربردهای خاص خودش را دارد و برای کاربردهای بلادرنگ گزینه بسیار قابل قبولی به حساب میآید. امروزه شرکتهای بسیار بزرگ و معتبری از آن استفاده میکنند و روند توسعه و استفاده از آن در آینده همچنان امیدوار کننده است. بنابراین با یادگیری نو دجی اس میتوان گفت آینده شغلی ما به احتمال زیاد تضمین خواهد شد.
بسیار عالی و کامل بود ممنون از سایت خوبتون
با عرض ادب و احترام،نود جی اس فریمورک نیستش و ران تایمی برای جاوا اسکریپته که از جمله فریمورک هاش میشه به اکسپرس جی اس اشاره کرد.
با سلام و احترام؛
صمیمانه از همراهی شما با مجله فرادرس و ارائه بازخورد سپاسگزاریم.
از اینکه دیدگاه و نظر خود را با ما به اشتراک میگذارید بسیار خوشنود و مفتخریم.
در بخش «آیا Node.js یک زبان برنامه نویسی است؟» به این موضوع پرداخته شده است که:
ود جی اس در واقع نوعی محیط اجرا است که به کاربر اجازه استفاده از جاوا اسکریپت را در خارج از مرورگر و سمت سرور میدهد. همچنین نود جی اس فریمورک یا چارچوب هم به حساب نمیآید، اما کاربران و توسعهدهندگان عادت کردهاند آن را فریمورک خطاب کنند، در حالی نود جی اس محیطی است که به اجرای فریمورکها کمک میکند. به طور کلی میتوان گفت، Node.js نه زبان برنامه نویسی است و نه فریمورک، بلکه محیطی برای اجرای آنها محسوب میشود.
با این حال به منظور عدم بروز سوء تفاهم، تمام بخشهایی از این مطلب که در آنها از نود جی اس به عنوان فریمورک یاد شده بود اصلاح شدند.
برای شما آرزوی سلامتی و موفقیت داریم.