شروع کار با NodeJS

یکشنبه 14 آذر 1395

در این مقاله ، قصد داریم شما را با Node.Js و محدودیت ها و مزیت های آن و همچنین معماری و طریقه استفاده از آن را آشنا کنیم.

شروع کار با  NodeJS

Node JS :

• Node JS  یک محیط زمان اجرای سمت سرور است، که برای توسعه Web Applications از آن استفاده میشود که  شبیه به ASP.NET,JSP, PHP میباشد.

در صورتی که به یادگیری اصولی و حرفه ای این تکنولوژی قدرتمند علاقمند هستید میتوانید دوره کامل و جامع آموزش Node Js موجود در سایت تاپ لرن را مشاهده کنید .

• متن باز(OpenSource) است.

• از پلتفرم های مختلف پشتیبانی میکند.(CrossPlatform)

• Node JSبر پایه ی موتور V8 گوگل و libuv است.

• Node JS توسط  Ryan Dhal در سال 2009 توسعه یافته است.

مزیت ها :

• متن باز 

متن باز بودن Node JS به این معنی است که برای گرفتن لایسنس آن شما نیاز به پرداختی برای آن ندارید و کاملا رایگان است. Node JS دارای ماژول های زیادی است که تمامی آن ها free است.

• مقیاس پذیر

Node JS از دو طریق میتواند مقیاس پذیر باشد. به صورت افقی که این به معنی است که شما میتوانید چندین نود را به سیستم موجود خود اضافه کنید، و به صورت عمودی که برپایه ی یک نود است. شما میتوانید منابع دیگری مانند memory را اضافه کنید.

• قابلیت استفاده مجدد (Reusability)

NodeJS قابلیت استفاده مجدد دارد زیرا در سمت front end و کلاینت کدهای جاوا اسکریپت قرار دارند،بنابراین شما می توانید ماژول های خود را در سمت کلاینت به خوبی سمت سرور دوباره استفاده (reuse) کنید.

• عملکرد بهتر

عملگرهای ورودی-خروجی Node JS از نوع non-blocking هستند.بنابراین میتوانند عملکرد بهتری را ارائه دهند.node میتواند caching را پشتیبانی کند بنابراین در اولین درخواست ها سریع عمل میکند.

هنگامی که اولین درخواست اتفاق می افتد مازول های جاوااسکریپت را در سمت سرور کش میکند.

• ورودی و خروجی های ناهمگن

Node میتواند درخواست های با حجم بالا و ناهمگن را handle کند. برای اجرای سریع از رویداد loop استفاده میکند.

• جاوااسکریپت

نود از جاوااسکریپت به عنوان یک زبان برنامه نویسی برای back-end و front end استفاده میکند.

• حمایت جامع

 Node.js تحت حمایت کامل توسعه دهندگان است و تعداد زیادی از ماژول های نود به صورت رایگان در اینترنت قرار گرفته است.

معماری :

NodeJS  به دو کامپوننت اصلی تقسیم شده است که موتور V8 گوگل و  Libuv هستند.

• موتور V8 گوگل

ویژگی آن متن باز بودن است. کامپایلر آن  JIT به معنی فقط در این زمان (just in time) است که به زبان ++C نوشته شده است. این یک موتور جاوا اسکریپت با عملکرد بالا است که در GoogleChrome استفاده شده است.

که این کامپایلر مستقیما کدهای javaScript  را به زبان assembly تبدیل میکند که برای هر درخواست فوری مانند token opcode, آماده است.

موتور V8 گوگل به سه کامپوننت زیر تقسیم شده است :

- کامپایلر

این مسئول کامپایل کردن کدهای جاوا اسکریپت است.

- بهینه کننده 

این را بیشتر به اسم Crankshaft میشناسند. این کدهای جاوااسکریپت را در زمان کامپایل بهینه میکند.

برای این کار( AST (Abstract Syntax Tree را با استفاده از کدهای جاوااسکریپت تولید میکند.

AST  دوباره به ( SSA (Static Single Assignment ترجمه میکند.

Garbage Collector 

موتور V8  یک heap برای شی های جاوااسکریپت میسازد.

هنگامی که شی از بین رفت Garbage Collector مموری را بررسی میکند. اگر object یی از بین رفته باشد و دیگر از آن استفاده نمیشود ادرس آن را به شی تازه ساخته شده اختصاص میدهد.

• Libuv

Libuv یک multiplatform  است که روی ورودی و خروجی های ناهمگن تمرکز کرده است.

Libuv کتابخانه اصلی NodeJS است که برای عملگرهای ورودی خروجی های ناهمگن استفاده می شود که در ++C/C نوشته شده است که به شرح زیر است:

Thread Pool

+ رویداد Loop

+ ورودی و خروجی های ناهمگن

+ (C-ares(Async-DNS resolution 

http parser 

+  SSL باز 

+ Zlib

TCP و UDP sockets های ناهمگن

+ فایل سیستم

+ مدیریت سیگنال

 نصب و راه اندازی NodeJS :

مراحل زیر را برای نصب آن دنبال کنید :

• NodeJS  را از اینجا دانلود کنید

• Installer را اجرا کنید.

• کامپوتر خود را restart کنید.

محدودیت ها :

NodeJS  محدودیت های خود را هم دارد :

• از multi threading پشتیبانی نمیکند.

•  کارهای محاسباتی را نمیتواند انجام دهد.

• عملگرهایی که زمان زیادی را میگیرند را نمیتواندhandle کند.در غیر این صورت تمام درخواست های آینده داخل صف رویداد می شود و برای اجرای آن ها باید صبر کنید.

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • NodeJs
  • 3k بازدید
  • 12 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید