Node.js یک محیط زمانِ اجرای (Runtime) متن بازاوپن سورس یا متن باز چیست؟ اوپن سورس به چه معناست؟اوپن سورس یا متن باز چیست؟ این صفحه عالی به بررسی این موارد و همچنین تاریخچه نرم افزار متن باز و نحوه به کارگیری متن باز در توسعه نرم افزار پرداخته است و چند سکویی (Cross Platform) برای اجرای کد جاوا اسکریپتجاوا اسکریپت چیست؟ معرفی زبان برنامه نویسی java scriptزبان برنامه نویسی جاوا اسکریپت چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای JavaScript پرداخته و مبانی برنامه نویسی جاوا اسکریپت را آموزش داده است. محیط اجرا محیطی است که یک برنامه در آن اجرا میشود. این محیط یک زیرساخت سخت افزاری و نرم افزاری است که از اجرای یک کد خاص در زمان واقعی پشتیبانی میکند. Node یا Node.js به طور گسترده برای برنامه نویسی سمت سرور استفاده میشود، و این امکان را برای توسعه دهندگان فراهم میکند تا از جاوا اسکریپت برای کد سمت کلاینت و سمت سرور بدون نیاز به یادگیری زبان اضافی استفاده کنند.
Node دارای موتور نسخه ۸(V8) جاوا اسکریپت است، همان موتوری که در گوگل کروم و سایر مرورگرها استفاده میشود. به زبان C++برنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده نوشته شده است و میتواند روی macOS، Linux، Windows و سیستمهای دیگر اجرا شود. موتور، کد جاوا اسکریپت را تجزیه (Parse) و اجرا میکند. این موتور میتواند مستقل از یک محیط مرورگر عمل کند یا در یک برنامه ++C تعبیه شده باشد یا به عنوان یک برنامه مستقل پیادهسازی شود. موتور V8، جاوا اسکریپتجاوا اسکریپت چیست؟ معرفی زبان برنامه نویسی java scriptزبان برنامه نویسی جاوا اسکریپت چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای JavaScript پرداخته و مبانی برنامه نویسی جاوا اسکریپت را آموزش داده را به صورت داخلی کامپایل میکند و با استفاده از فرآیندهای به موقع (JIT) سرعت را افزایش میدهد.
کد زیر نمونهای از یک فایل جاوا اسکریپت (server_tst.js) ساده است که برای محیط Node نوشته شده است. اسکریپت با بارگیری ماژول HTTPپروتکل http چیست؟ Http مخفف چیست و چگونه کار میکند؟در این مقاله عالی توضیح داده که پروتکل http چیست و چگونه کار میکند، سپس به توضیح پروتکل Https پرداخته و در نهایت به بررسی تفاوت http و https پرداخته است مربوط به Node.js شروع میشود. این ماژول شامل انواع کلاسها و روشها برای پیاده سازی سرور HTTP است.
پس از نصب Node.js بر روی کامپیوتر، فایل را میتوان با استفاده از یک دستور ساده اجرا کرد:
کد جاوا اسکریپت به Node دستور میدهد تا دو عملیات اساسی را انجام دهد:
- هنگام اتصال به http://localhost:2000، پیامی را در مرورگر دستگاه محلی نمایش دهد. در این پیام آمده است، "This is a test of Node.js on a local computer".
- پس از اجرای دستور، پیامی را به کنسول برگرداند. در این پیام آمده است، "Node.js server running at http://127.0.0.1:2000".
جزئیات بیشتر در مورد اجزای این اسکریپت و به طور کلی ماژول HTTP را میتوان با مراجعه به مبحث HTTP در مستندات مرجع رسمی APIAPI چیست؟ همه چیز درباره api یا رابط برنامه نویسی کاربردیاین مقاله عالی بررسی کرده که API چیست و چه کاربردی دارد و چگونه می توان از api ها در برنامه های خود استفاده نمود. همچنین استاندارد api و کاربرد api بررسی شده منتشر شده توسط شرکت Node.js یافت.
Node.js چگونه کار می کند؟
یک برنامه Node.js در یک فرآیند واحد (Single Process) اجرا میشود. Node برای هر درخواست یک نخ (Thread) جدید ایجاد نمیکند، همانطور که اغلب در مورد برنامههای سنتی سمت سرور اتفاق میافتد. به این ترتیب، یک سرور Node.js میتواند هزاران اتصال همزمان را بدون نیاز به مقابله با مسائل همزمانی نخ یا سربار (Overhead) در حالت چند نخی انجام دهد.
Node.js رویداد محور (Event Base) است و به صورت ناهمزمان اجرا میشود. کد نوشته شده برای محیط Node از مدل سنتی دریافت (Receive)، پردازش (Process)، ارسال (Send)، انتظار (Wait) و دریافت که در سیستمهای دیگر یافت میشود، پیروی نمی کند. در عوض، Node یک حلقه رویداد را پیاده سازی میکند که درخواستهای دریافتی را همانطور که در صف رویداد انباشته میشوند پردازش میکند و درخواستهای کوچک را یکی پس از دیگری بدون انتظار برای پاسخ مدیریت میکند.
این یک جابهجایی از مدلهای جریان اصلی (Mainstream Models) است که عملیات بزرگتر و پیچیدهتر را اجرا میکنند و چندین نخ را به طور همزمان پردازش میکنند و هر نخ قبل از حرکت منتظر پاسخ مناسب خود است.
به گفته خالق آن رایان دال (Ryan Dahl)، رویکرد Node.js یک مزیت بزرگ نسبت به این مدلها ارائه می دهد. Node عملیات ورودی/خروجی (I/O) را مانند رویکردهای سنتی تر مسدود نمیکند. این تا حد زیادی به این دلیل است که توابع Node مستقیماً I/O را انجام نمیدهند که به حذف امکان مسدود کردن کمک میکند. مسدود کردن یا بن بست تنها زمانی اتفاق میافتد که از روشهای همزمان در کتابخانه استاندارد Node استفاده میشود، اما این یک استثناست تا یک قاعده، و Node را برای برنامههای بلادرنگ با بار کاری همزمان (Concurrent Workloads) سنگین مناسب میکند.
Node همچنین با رابط خط فرمان (npm (CLI عرضه میشود. CLI بخشی از سیستم مدیریت بسته npm است که شامل یک رجیستری گسترده از نرم افزار جاوا اسکریپت و اطلاعات متا آن است. CLI به کاربران امکان میدهد مستقیماً از کنسول خود با بستههای npm در رجیستری تعامل داشته باشند. طبق گزارشها، این رجیستری بزرگترین مخزن کد تک زبانی در جهان است.
Node مانند جاوا اسکریپت از نظر یادگیری نسبتا آسان است. به طور گسترده پیادهسازی شده است و یک جامعه کاربری فعال و بزرگ به عنوان پشتوانه برای خود دارد. علاوه بر این، از آنجایی که Node ناهمزمان، رویداد محور و غیر مسدود است، میتواند همزمانی بلادرنگ (Real-time Concurrency) که در بسیاری از برنامههای کاربردی وب و خدمات آنلاین امروزی رایج است را مدیریت کند. Node برای کاربرد های بلادرنگ مانند چت، خدمات استریم، اینترنت اشیاء و برنامههای تک صفحهای مناسب است.
Node برای هر نوع حجم کاری مناسب نیست. به عنوان مثال به دلیل ماهیت تک نخی آن، ممکن است نتواند به طور موثر یک برنامه وب که به محاسبات سنگین سمت سرور نیاز دارد را اجرا کند. این بار محاسباتی میتواند منجر به مسدود کردن درخواستهای دریافتی و کاهش عملکرد کلی شود.
از سوی دیگر، اگر Node نیازهای شما را از همه جنبههای دیگر برآورده میکند و بار محاسباتی خیلی زیاد نیست، ممکن است بتوانید آن را به عنوان فرآیندهای پسزمینه در زبان دیگری پیادهسازی کنید. Node میتواند به عنوان بخشی از معماری میکروسرویس (Microservice) نیز استفاده شود که برنامه را به بخشهای کوچکتر تقسیم میکند.
مقایسه نود جی اس با تکنولوژی های دیگر: جانگو، لاراول، دات نت کور، پی اچ پی
در این بخش Node.js را فناوریهای رقیب مقایسه میکنیم. نود جی اس در مقایسه با جانگو، لاراول، دات نت کور و PHP نقاط قوت و ضعف خود را دارد. در اینجا ما تلاش میکنیم با بر شمردن این مزایا و معایب شما را درانتخاب تکنولوژی مناسب کمک کنیم.
Node.js و Django
هردو فریم ورک Django و Node.js، فریم ورکهایی هستند که جامعه بسیار بزرگی دارند- یعنی تعداد برنامه نویسانی که به این زبان کار می کنند، زیاد است-. هرکدام از این دو فریمورک، مزایا و معایب خاص خودشان را دارند و بنابر نیاز پروژه و البته مهارتهای برنامه نویس انتخاب میشوند. به عنوان مثال از لحاظ Performance، فریم ورک Node.js در مرحله ی بالاتری از Django قرار دارد در حالی که از لحاظ امنیت، Django رتبه ی بهتری دارد. در کل، در نظر گرفتن موارد زیر برای انتخاب بین این دو گزینه پیشنهاد میشود:
- اگر میخواهید سریعا یک برنامه MVP مقیاسپذیر (Scalable) با قابلیت های بالا ایجاد کنید و یا زبان برنامه نویسی شما پایتون است. جانگو را انتخاب کنید.
- برای ساخت سرویسهایی با پهنای باند بالا، ساخت APIAPI چیست؟ همه چیز درباره api یا رابط برنامه نویسی کاربردیاین مقاله عالی بررسی کرده که API چیست و چه کاربردی دارد و چگونه می توان از api ها در برنامه های خود استفاده نمود. همچنین استاندارد api و کاربرد api بررسی شده ها و ایجاد مایکروسرویسها، Node.js پیشنهاد میشود.
Node.js و Laravel
Laravel یک فریمورک برای زبان Php است و تفاوت های زیادی با Node.js دارد، برخلاف Node که عملکرد آن به صورت نامتقارن است، Laravel به صورت متقارن است و روی چند نخ کار میکند. Performance آن به مراتب کندتر از Node.js است و جامعه آن نیز نسبت به نود جی اس کوچکتر است. برای انتخاب بین این دو گزینه، توسعه دهندگان باید موارد زیر را در نظر بگیرند:
- در صورتی که میخواهید به سرعت مراحل توسعه را انجام دهید و یک سیستم Full-Scale بسازید (مثلا یک CMS شبیه به وردپرس) که از امنیت بالایی برخوردار باشد، فریمورک Laravel میتواند یک گزینهی بسیار مناسب باشد.
- اگر شما یک توسعه دهنده ی Full-Stack هستید که سرعت و کارایی برای شما از اهمیت بالایی برخوردار است، Node.js میتواند انتخاب منطقی تری باشد. به عنوان مثال انتخاب Node.js برای ساخت نرم افزار چت، برنامه های Data Streaming و برنامههای مانیتور کردن، گزینهی بهتری است.
Node.js و ASP.Net core
در بروزرسانیهایی که اخیرا برای ASP.Net ایجاد شده است، بررسی شده که Performance یا کارایی ASP.Net در پروژههای CPU-intensive بالاتر و بهتر از Node.js است. همچنین در ASP.Net امکان ساخت GUI نیز میسر است. بنابراین اگر میخواهید یک وبسایت با عملکردهای پایهای را ظرف چند ساعت بسازید، ASP.Net میتواند یک گزینهی مناسب برای شما باشد.
جمع بندی
Node.js به سبب سادگی یادگیری میتواند انتخاب بسیار خوبی برای کسانی باشد که علاقه دارند تا یک زبان برنامه نویسی سمت سرور را بیاموزند. به دلیل آنکه Node عملیات ورودی/خروجی (I/O) را مانند رویکردهای سنتیتر مسدود نمیکند، آن را برای برنامههای بلادرنگ با بار کاری همزمان سنگین مناسب میکند. Node.js میتواند جزو اولین انتخابها برای برنامههای بلادرنگ که به سرعت بالا برای پردازش نیاز دارند باشد. البته Node برای هر نوع حجم کاری مناسب نیست و ممکن است نتواند برنامهای که به محاسبات سنگین سمت سرور نیاز دارد را اجرا کند.
Node.js چیست؟
Node.js یک چارچوب بسیار قدرتمند است که بر روی موتور جاوا اسکریپت V8 Chrome توسعه یافته است که جاوا اسکریپت را مستقیماً در کد ماشین اصلی کامپایل میکند. یک چارچوب سبک وزن است که برای ایجاد برنامههای کاربردی وب سمت سرور استفاده میشود و API جاوا اسکریپت را برای ارائه عملکردهای معمول سمت سرور گسترش می دهد. معمولاً برای توسعه برنامههای کاربردی در مقیاس بزرگ، بهویژه برای سایتهای پخش ویدیو، برنامههای تک صفحهای و سایر برنامههای وب استفاده میشود.
مزایای عمده استفاده از Node.js چیست؟
- سریع بودن: Node.js بر روی موتور جاوا اسکریپت V8 گوگل کروم ساخته شده است که کتابخانه آن را در اجرای کد بسیار سریع میکند.
- نا همزمان بودن: سرور مبتنی بر Node.js هرگز منتظر نمیماند تا API دادهها را برگرداند و در نتیجه آن را ناهمزمان میکند.
- مقیاس پذیر بودن: به دلیل مکانیسم رویداد آن که به سرور کمک میکند تا به روشی غیر مسدود کننده پاسخ دهد، بسیار مقیاس پذیر است.
- متن باز بودن: Node.js دارای یک جامعه متن باز گسترده است که در تولید ماژولهای عالی برای افزودن قابلیتهای اضافی به برنامههای Node.js کمک کرده است.
- بدون بافر بودن: برنامههای Node.js به سادگی دادهها را به صورت تکهای خروجی میدهند و هرگز هیچ دادهای را بافر نمیکنند.
تفاوت های بین JavaScript و Node.js چیست؟
JavaScript یک زبان برنامه نویسی است اما Node.js یک مترجم و محیطی برای JavaScript است. از JavaScript برای هر فعالیت سمت کلاینت در یک برنامه کاربردی وب استفاده میشود و از Node.js برای دسترسی یا انجام هرگونه عملیات غیر مسدود کننده در هر سیستم عاملی استفاده میشوند. موتور اجرا کننده آنها نیز متفاوت است.
کجا می توان از Node.js استفاده کرد؟
- برنامه های وب بلادرنگ
- برنامه های کاربردی شبکه
- سیستم های توزیع شده
- برنامه های کاربردی عمومی
Node.js چگونه کار می کند؟
Node.js یک ماشین مجازی است که از جاوا اسکریپت به عنوان زبان برنامه نویسی خود استفاده میکند و در محیط V8 اجرا میشود. بر روی یک حلقه رویداد تک رشتهای و یک I/O غیر مسدود کننده کار میکند که نرخ بالایی را ارائه میدهد زیرا میتواند تعداد بیشتری از درخواستهای همزمان را مدیریت کند. همچنین، با استفاده از ماژول HTTP میتواند بر روی هر وب سرور مستقلی اجرا شود.