nodejs چیست
مقدمه
در این مقاله به بررسی Nodejs چیست مپردازیم.
node.js در واقع یک پلتفرم است که محوریت اصلی آن بر روی زبان جاوااسکریپت است.
Node.js امروزه توانسته با استفاده از تکنولوژی رویداد محوری که درون خود پایه گذاری کرده است، بسیاری از برنامهنویسان را جذب خود کند.
شرکت هایی مانند آیبیام ، مایکروسافت،لینکدین،پیپل،نتفلیکس،یاهو سیسکو از نود جی اس استفاده میکنند.
در حال حاضر JavaScript قدرت انجام کارهایی را دارد که دیگر زبانهای اسکریپتنویسی مانند Python ندارند.
هم JavaScript مرورگر شما و هم Node.js بر روی موتور runtime جاوااسکریپت V۸ اجرا میشوند. این موتور کد JavaScript شما را میگیرد و آن را به یک کد ماشین (Machine Code) سریعتر تبدیل میکند. کد ماشین، یک کد سطح پایین است که کامپیوتر میتواند بدون نیاز به تفسیر آن، اجرایش کند.
تاریحچه nodejs
اول از همه بهتر است با سال تولد این پلتیفرم آشنا بشوید. node.js در سال ۲۰۰۹ توسط رایان دال متولد شد.نسخه اولیه این زبان تنها توسط دو سیستم عامل لینوکس و مک او اس پشتیبانی میشد.

در ابتدا توسعه و نگهداری node.js توسط خود رایان صورت میگرفت که بعد از مدتی شرکت جوینت از وی حمایت کرد.
ایده این ساخت این زبان از نمودار پیشرفت سایت فیلکر(سایتی برای اشتراک گذاری ویدیو و عکس است.) گرفته شده است.در آن زمان در هنگام بارگذاری فایل در سایت فلیکر گوگل نمیتوانست تشخیص بدهد که چه مقدار از فایل مورد نظر آپلود شده است بنابر این برای نمایش روند پیشرفت باید مرورگر به وب سرور پاسخ دهد.رایان دال به دنبال راه ساده تری برای این کار بود.
وی در سال ۲۰۰۹ با انتقاد از محبوب ترین سرور جهان یعنی آپاچی پرداخت و در همان سال node.js را به جهان معرفی کرد تا ضعف های این سرور را برطرف کند.
node.js یک پلتفرم است نه یک کتابخانه یا فریم ورک که بعضی به اشتباه بر این باورند.ما از این پلتفرم استفاده میکنیم تا کدهایی جاوااسکریپتی را که مینویسیم را روی سرور اجرا کند.
یعنی یک فضایی را روی سرور ایجاد میکند تا کدهای برنامه به بهترین شکل ممکن اجرا بشوند.
درون گوگل یک موتور به نام v8 وجود دارد که js بر اساس این موتور طراحی شده است این موتور که توسط گوگل طراحی شده است وظیفه ی این را دارد تا کدهای جاوااسکریپت را ابتدا در خودش اجرا کند و بعد کامپایل بشوند.به زور ساده تر کدها را میگرد و درون خودش به کد ماشینی تبدیل میکند.یکی از دلایلی که باعث شده از node.js بسیار استفاده شود وجود همین موتور است که کار طراحان وب را راحت کرده است.
به وسیله node.js شما میتوانید کارهای بیشتری با جاوااسکریپت انجام دهید.اکنون شما میتوانید با استفاده از جاوا اسکریپت کارهایی را انجام دهید که دیگر زبان های برنامه نویسی مانند پایتون انجام میدهند، انجام دهید.
Nodejs چیست ؟
تا قبل از ارائه Node Js جاوا اسکریپت یک زبان سمت کلاینت بود.
نودجیاس یک محیط سمت سرور برای اجرای کدهای JavaScript است، در حقیقت، Node.js در نتیجه تلاشهای دولوپرهای زبان جاوا اسکریپت برای توسعه محیطی به وجود آمد که دولوپرها بتوانند کدهای جاوااسکریپت خود را علاوه بر داخل مرورگر، در سمت سرور نیز در قالب یک اپلیکیشن مستقل اجرا کنند.
بر اساس تعریف ارائهشده در وبسایت رسمی nodejs چیست:
node js یک محیط اجرای جاوا اسکریپتی است که روی موتور اجرای کد جاوا اسکریپت مرورگر کروم تحت عنوان V8 ساخته شده است.
هدف این پلتفرم این است که سرعت اجرای برنامه تحت وب یا شبکه را افزایش دهد و فشار زیاد سرور را در زمان های افزایش بازدید کم کند.
Node.js در سال ۲۰۰۹ معرفی شده است. پلتفرم Node.js محدود به هیچ مرورگری نیست و قابلیت اجرا شدن در انواع سیستمعاملهای ویندوز، لینوکس و مک را داراست.
Node.js فریم ورک نیست
قبل از اینکه بدانیم nodejs چیست بهتر است درباره این صحبت کنیم که نود جی اس چه چیزهایی نیست. نود جی اس یک فریم ورک جاوا اسکریپت نیست. فریم ورک به مجموعه ای از کتابخانهها و استانداردها گفته میشود که کار با یک زبان خاص را آسانتر کرده و مانع انجام کارهای تکراری و یکنواخت توسط برنامه نویس میشوند.
فریم ورکهای زیادی با زبان جاوا اسکریپت طراحی شده اند و در بخشهای مختلف مورد استفاده قرار میگیرند. برخی از فریم ورکهای معروف جاوا اسکریپت عبارتند از: Angular، React، Meteor.js، Vue.js و غیره. استفاده از این فریم ورکها تا حد زیادی کارایی و امنیت محصول ما را بالا برده و درمقابل هزینهها را هم کاهش میدهد.(برای آموزش انگولارجی اس کلیک کنید)
پس دقت داشته باشید که Node.js فریم ورک نبوده و تعریف دقیق آن “محیط اجرایی” یا “run-time environment” میباشد. در واقع نود جی اس کمی فراتر از فریم ورک رفته و دامنه کاربردهای آن کمی بیشتر از فریم ورک میباشد. Node.js محدود به برنامههای تحت وب نبوده و میتوان از آن در ساخت میکروکنترلر ها، Rest APIها، بستههای سیستم عامل، رباتیک و حتی در مراحل پیشرفته در ساخت برنامه برای هواپیمای بدون سرنشین نیز استفاده کرد.
مزایای Node.js
- زمانی که فعالیت سرور به شدت افزایش پیدا می کند مانند زمان Attack DDOS این فریم ورک تمامی این سنگینی را به دوش کشیده و هیچ رد پایی برای متجاوزین باقی نمی گذارد. بدین ترتیب اولین ویژگی آن امنیت و نفوذناپذیری به آن است.
- همانطور که گفتیم نود جی اس به دلیل تک رشته ای و نامتقارن بودن، در زمان پردازش داده های ورودی و خروجی (I/O) دیگر فرآیندها را متوقف نمی کند به همین دلیل پاسخگویی آن در یک چشم بر هم زدن انجام می شود. در واقع شما به طور همزمان می توانید چندین Task مثل پیام دادن، کپی کردن فایل ها از روی دیسک، کار بر روی دیتابیس و … را بر روی سرور خود اجرا کنید.
- همانطور که گفتیم در اکثر پلتفرم ها برای هر درخواست یک رشته (Thread) ایجاد می شود که در واقع هر کدام از آنها فضایی را بر روی RAM سرور (مثلا 500 مگابایت) اشغال می کنند که طبیعتا در صورت ایجاد درخواست های بیش از حد RAM به حالت Shout down درخواهد آمد. در حقیقت کدهای مربوط به جاوا اسکریپت در رشته اصلی (main Thread) و کدهای مربوط به قسمت I/O در رشته های دیگر پردازش می شوند.
- موتور مجازی V8 گوگل در جاوا اسکریپت که وظیفه اجرا کدهای جاوا را برعهده دارد در پس از دریافت کدها و در زمان اجرا، عملیات شبیه سازی آن ها را انجام می دهد بدین معنی که زبان کدها را تبدیل به زبان کدهای موتور مجازی V8 می کند. بدین ترتیب توابعی که زیاد درخواست می شوند به علت شباهت به کدهای ماشین سریع تر پردازش شده و در نتیجه عملکرد کلی کدها سریع تر انجام می گیرد.
- همانطور که توضیح دادیم این پلتفرم به صورت متن باز در اختیار عموم قرار دارد و برنامه نویسان بسیاری در توسعه آن نقش داشته اند بدین معنی که یک کتابخانه بسیار وسیع و مجهز برای آن وجود دارد که به شما این امکان را می دهد تا برای اکثر مفاهیم ابتدایی و پیش پا افتاده از آن استفاده کنید و دیگر مجبور به کد نویسی درباره کوچکترین چیزها نباشید.
مزایای استفاده از Node.js
- متن باز است
- کراس پلتفرم (cross-platform) است
- پاسخگوی تعداد زیادی کاربر و بسیار سریع
- خطایابی بسیار ساده و سریع در این تکنولوژی
- جامعه کاربری بزرگ
- پایین بودن زمان پاسخگویی در Node.js
- پشتیبانی از Caching
- سازگاری با سیستم عامل های مختلف لینوکس، ویندوز، مک
اهداف نود جی اس
در ادامه مقاله nodejs چیست اهداف آن را بررسی میکنیم .هدف اصلی Node.js در اصل دست یافتن به راهی آسان و امن برای ساخت اپلیکیشن هایی مقیاس پذیر و در حین حال کارآمد می باشد که رسیدن به این مهم به لطف معماری (Architecture) موجود در آن میسر می شود که ویژگی های این معماری به شرح زیر می باشد :
- تک رشته ای (Single threaded) :
Node.js برای اجرای عملیات به صورت تک رشته ای عمل می کند که این امر برخلاف پلتفرم هایی مانند Apache HTTP (که در آنها برای هر درخواست یک رشته تولید می شود) می باشد. در واقع این امر از جابجایی متن (Context Switching) در CPU جلوگیری به عمل آورده و باعث جلوگیری از انباشت بیش از حد در حافظه می شود.
- حلقه رویداد (Event loop) :
Node js از یک مدل تک موضوعی به همراه حلقه رویداد استفاده می کند بدین گونه که مکانیزم حلقه رویداد باعث می شود سرور به صورت غیر مسدود شونده (Non-Blocking) پاسخ ها را ارسال کند که در مقایسه با مکانیزم های سنتی که سرور را مجبور به ارسال چند درخواست برای پردازش می کردند، مقیاس پذیری بیشتری داشته دارد.
- ورودی خروجی غیر مسدود شونده (Non-Blocking I/O) :
نود جی اس به لطف مدل I/O نامتقارن تعبیه شده در کتابخانه خود، زمان کمتری را برای دریافت جواب از ورودی و خروجی های (وب سرویس، سیستم فایل ها، پایگاه داده و …) خود می کند. به لطف این ویژگی ها این فریم ورک قادر به مدیریت انبوهی از ترافیک بوده و در کسری از ثانیه به صورت متوالی درخواست رشته (Thread) می نماید. به علاوه تمام خروجی این پلتفرم بدون هیچ عملیات میانگیری (Buffering) و تماما به صورت تکه تکه ای منتشر می شود.
معایب Node.js
- چون کتابخانه معتبری از جاوا اسکریپت در دسترس نیست بنابراین استانداردهایی که کدهای منبع از روی آن نوشته می شوند همگی در یکجا جمع نیستند بدین معنی که هر سرور طراحی شده با js بسیار به توسعه دهنده (Developer) خود متکی و وابسته است.
- به دلیل اینکه این پلتفرم تا حدودی جدید و جوان می باشد برای همین اگر دغدغه بودجه برای توسعه یک سرور در میان باشد، متاسفانه در بیشتر هاست های اشتراکی قابلیت استفاده از Nodejs وجود ندارد.
- nodejs هم معایب خاص خودش را دارد. سیستمهای نوشته شده با Node JS شدیدا وابسته به برنامه نویس خود هستند چون به دلیل نداشتن یک کتابخانه استاندارد برای JavaScript از استانداردهای پراکندهای برای نوشتن سورس کدها استفاده میشود.
Nodejs به آسانی در تمام پلتفرم ها موجود نیست و بیشتر هاست های اشتراکی از آن پشتیبانی نمی کنند و این موضوع در زمانیکه موضوع بودجه مطرح باشد، مشکل ایجاد می کند، اما به آسانی قابل راه اندازی روی سرور یا vps است .
در مجموع باید بگوییم Node.js در آیندهای نه چندان دور به یکی از زبانهای برنامه نویسی وب برای توسعه کسبوکار تبدیل خواهد شد.
کجا باید از Node.js استفاده کنیم؟
در زیر برخی از موقعیتهایی که نود جی اس خودش را به عنوان یک پلتفرم کارا معرفی میکند آمده است:
– نرمافزارهای محدوده I/O (ورودی و خروجی)
– نرمافزارهای جریان دادهای (Data Streaing)
– دادههای نرمافزارهای بلادرنگ (Real-Time)
– برنامههای مبتنی بر JASON API
– برنامههای تک صفحهای
کجا از Node.js استفاده نکنیم؟
استفاده از این پلتفرم در برنامههای متمرکز بر CPU توصیه نمیشود.
جمع بندی
وقتی از بک اند صحبت میکنیم، احتمالا اولین چیزی که به ذهنتان میرسد PHP است، بعد هم احتمالا ذهنتان به سمت مایکروسافت و تکنولوژی ASP.Net میرود. اما جاوا اسکریپت هم با معرفی نود جی اس و امکانات قابل قبول در حوزه برنامه نویسی سمت سرور هم ورود کرد. نود جی اس یک محیط اجرایی رایگان برای زبان جاوا اسکریپت است که کارهای متنوعی انجام میدهد. نود جی اس رایگان است، یک جامعه بزرگ از برنامه نویسان پشت آن قرار دارند و یک پکیج منیجر بسیار قدرتمند به نام NPM یا Node Package Manager برای آن ساخته شده که نزدیک به نیم میلیون پکیج در آن قرار دارد.
در این مقاله به بررسی nodejs چیست پرداختیم . خوشحال میشم هرگونه سوال یا نکته ای بتظرتون میرسه رو باهامون در ارتباط بگذارید.