امروزه جاوا اسکریپت در جاهای مختلف حضور دارد و کارهای متنوعی با آن انجام میشود. هرچند جاوا اسکریپت را کنار HTML و CSS هسته وب میدانند اما از این زبان سطح بالا و مفسری به جزء وب در ساخت اپلیکیشنهای موبایل، بازیهای رایانه ای، برنامههای دسکتاپ و غیره نیز استفاده میشود. از مدتها قبل یکی از آرزوهای برنامه نویسان جاوا اسکریپت این بود که بتوانند کدهای خود را به جز مرورگر کاربر در سمت سرور هم اجرا کنند. یعنی به کمک جاوا اسکریپت بتوانند ظاهر و منطق سرویس تحت وب خود را در کنار هم ایجاد کنند و دیگر برای برنامه نویسی سمت سرور سراغ زبان هایی مثل PHP یا Ruby نروند. یکی از محیطهای هایی که به برنامه نویسان اجازه میدهد کدهای جاوا اسکریپت خود را سمت سرور اجرا کنند، Node.js میباشد. در این آموزش بررسی میکنیم که Node.js چیست و چه کاربردهایی دارد.
Node.js چیست ؟
Node.js یک پلتفرم سمت سرور مبتنی بر موتور جاوا اسکریپت گوگل کروم (V8 Engine) میباشد. Node.JS تمام چیزهایی که برای اجرای یک برنامه نوشته شده به زبان جاوا اسکریپت را نیاز دارید برایتان فراهم میکند. آقای Ryan Dahl در سال 2009 Node.JS را معرفی کرد تا نشان دهد جاوا اسکریپت قدرتمندتر از این حرفها است که فقط برای پویاسازی صفحات وب در فرانت اند استفاده شود. در واقع به کمک Node.js زبان برنامه نویسی جاوا اسکریپ به جای اجرا درمرورگر در محیط سرور اجرا میشود. Node.js به شما اجازه میدهد به آسانی و سادگی برنامههای تحت شبکه مقیاس پذیر و بزرگ بنویسید. جاوا اسکریپت از سال 1995 در حال پیشرفت بود. هر چند این زبان تا مدتها قبل حضور موفقی در سمت سرور نداشت و و تلاش هایی که توسط برنامه نویسان انجام شده بود، به مرور زمان از ذهن توسعه دهندگان دیگر محو میشد. تا اینکه با معرفی نود جی اس در سال 2009 مهره برگشت و به مرور زمان جاوا اسکریپت بیشتر و بیشتر در سمت سرور مورد استفاده قرار گرفت.
اگر شما هم به برنامه نویسی node js علاقه مندید و قصد دارید این مسیر را حرفه ای ادامه دهید پیشنهاد میکنیم در دوره آموزش node js سون لرن شرکت نمایید و از پشتیبانی یکساله دوره بهرهمند شوید.
Node.js فریم ورک نیست
قبل از اینکه بدانیم Node.js چیست بهتر است درباره این صحبت کنیم که نود جی اس چه چیزهایی نیست. نود جی اس یک فریم ورک جاوا اسکریپت نیست. فریم ورک به مجموعه ای از کتابخانهها و استانداردها گفته میشود که کار با یک زبان خاص را آسانتر کرده و مانع انجام کارهای تکراری و یکنواخت توسط برنامه نویس میشوند. فریم ورکهای زیادی با زبان جاوا اسکریپت طراحی شده اند و در بخشهای مختلف مورد استفاده قرار میگیرند. برخی از کتابخانهها و فریم ورکهای معروف جاوا اسکریپت عبارتند از: Angular، React، Meteor.js، Vue.js و غیره. استفاده از این فریم ورکها تا حد زیادی کارایی و امنیت محصول ما را بالا برده و درمقابل هزینهها را هم کاهش میدهد. پس دقت داشته باشید که Node.js فریم ورک نبوده و تعریف دقیق آن "محیط اجرایی" یا "run-time environment" میباشد. در واقع نود جی اس کمی فراتر از فریم ورک رفته و دامنه کاربردهای آن کمی بیشتر از فریم ورک میباشد. Node.js محدود به برنامههای تحت وب نبوده و میتوان از آن در ساخت میکروکنترلر ها، Rest APIها، بستههای سیستم عامل، رباتیک و حتی در مراحل پیشرفته در ساخت برنامه برای هواپیمای بدون سرنشین نیز استفاده کرد.
چرا باید از Node.js استفاده کنیم؟
Node.js بازدهی و انعطاف بالایی دارد
نود در کنار V8 engine از زبان برنامه نویسی C++ استفاده کرده و سرعت بسیار بالایی دارد. هم V8 هم Node.js به صورت مرتب آپدیت شده و با قابلیتهای جدید جاوا اسکریپت هماهنگ میشوند، همینطور بازدهی آنها بالاتر رفته و مشکلات امنیتی آنها نیز برطرف میشود. همینطور به دلیل استفاده از زبان جاوا اسکریپت انتقال فایل JSON (متداولترین قالب انتقال داده در وب) به طور پیش فرض بسیار سریع خواهد بود.
Node.js کراس پلتفرم است
پلتفرم هایی مثل Electron.js یا NW.js به شما اجازه میدهند با نود جی اس برنامههای دسکتاپ بسازید. به این ترتیب میتوانید برخی از کدهای برنامه تحت وب خود را در محیط ویندوز، لینوکس و مک اواس استفاده کنید. در واقع به کمک نود جی اس، همان تیمی که روی نسخه وب محصول کار میکنند، بدون نیاز به دانش تخصصی در زبانهای C# یا Objective C یا سایر زبان هایی که برای ساخت برنامههای Native به کار میروند، میتوانند یک برنامه دسکتاپ بسازند.
Node.js میتواند با میکروسرویسها ترکیب شود
اکثر پروژههای بزرگ در اول کار ساده بودند و در یک نسخه MVP معرفی شده بودند. اما به مرور زمان این سرویسها بزرگتر شده و نیاز به اضافه کردن قابلیتهای جدید در آنها حس میشد. گاهی وقتها بزرگ شدن سرویس و اضافه کردن امکانات جدید به محصول میتواند برای تیم توسعه دهندگان تبدیل به یک کابوس شود. اما یک راه حل مناسب برای حل این مشکل استفاده از میکروسرویس است. میکروسرویس کمک میکند برنامه خود را بخشهای کوچک تقسیم کنید که هر بخش میتواند توسط تیم متفاوت و حتی زبانی متفاوت نوشته شود. نود جی اس در کار با میکروسرویسها عملکرد بسیار خوبی دارد.
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 بسازید.
جمع بندی
وقتی از برنامه نویسی سمت سرور صحبت میکنیم، احتمالا اولین چیزی که به ذهنتان میرسد PHP است، بعد هم احتمالا ذهنتان به سمت مایکروسافت و تکنولوژی ASP.Net میرود. اما جاوا اسکریپت هم با معرفی نود جی اس و امکانات قابل قبول در حوزه برنامه نویسی سمت سرور هم ورود کرد. نود جی اس یک محیط اجرایی رایگان برای زبان جاوا اسکریپت است که کارهای متنوعی انجام میدهد. نود جی اس رایگان است، یک جامعه بزرگ از برنامه نویسان پشت آن قرار دارند و یک پکیج منیجر بسیار قدرتمند به نام NPM یا Node Package Manager برای آن ساخته شده که نزدیک به نیم میلیون پکیج در آن قرار دارد. هر چقدر بیشتر با این پلتفرم کار کنید این سوال برایتان به وجود میآید که چرا زودتر سراغ نود جی اس نرفتم. اگر تجربه ای از کار با نود جی است دارید خوشحال میشویم با ما و کاربران سون لرن به اشتراک بگذارید.
۲۴ دیدگاه
Meysam۱۸ آبان ۱۴۰۳، ۰۶:۴۸
ممنون از توضیحات ساده و مفیدتون
حسین۰۴ دی ۱۴۰۲، ۲۰:۰۳
یه رودمپ از نود جی اس میدین
نازنین کریمی مقدم۰۶ دی ۱۴۰۲، ۱۲:۲۷
درود
میتونید به نقشه راه زیر مراجعه کنید:
https://roadmap.sh/nodejs
۲۰ شهریور ۱۴۰۲، ۰۰:۰۷
سلام میخواستم بدونم از نود جی آی میشه در کتابخانه ری اکت نیتیو استفاده کرد باهاش بک اند یک سایت فروشگاهی رو نوشت خیلی برام مهم هم میشه بگید
نازنین کریمی مقدم۲۰ شهریور ۱۴۰۲، ۰۷:۵۱
درود
بله شدنی هست. <a href="https://github.com/suhassalian27/E-Commerce-Website-using-ReactJS-NodeJS" target="_blank" rel="noopener nofollow ugc">نمونه کد سایت فروشگاهی با ری اکت و نود جی اس</a>
۱۷ شهریور ۱۴۰۲، ۰۶:۳۱
با سلام
باید خدمت شما عرض کنم در قسمت بالا که فریمورکهای جاوااسکریپت رو بیان کردید، باید خدمتتون بگم که ری اکت فریم ورک نیست و کتابخانه هست.
نازنین کریمی مقدم۱۹ شهریور ۱۴۰۲، ۰۶:۱۹
درود
ممنون بابت اطلاع رسانی تون اصلاح شد.
۲۳ مرداد ۱۴۰۲، ۰۸:۲۳
جدا یعنی با node میتوان کارهای دیتابیسی رو هم انجام داد مثل php :| بابا ایول بنظرم js هنوز جای پیشرفت بیشتری داره تا بتونه جای پایتونو #C رو هم بگیره و کارهای اونا رو هم انجام بده ؟_&#39;
نازنین کریمی مقدم۱۹ شهریور ۱۴۰۲، ۰۹:۴۳
درود
بله با نود میشه کار دیتابیسی انجام داد اما اون جامعه فعال و امکانات گسترده زبانهایی مثل پایتون و php رو نداره.
۱۹ دی ۱۴۰۱، ۲۲:۰۰
توضیحات خلاصه و مفیدی دادید. مرسسسی
۱۱ آبان ۱۴۰۱، ۰۸:۰۳
As NodeJs is open-source and it is nothing but a JavaScript framework , so for the developers who are already used to JavaScript, for them starting developing their projects with NodeJs is very easy.
این تعریف مختصری از nodejs بعد از مطالعه چندین سایت خارجی و ایرانی هست که اون رو یک framework معرفی میکنه
به نظرم یه بازنگری در مطلب شما مورد نیاز هست
نازنین کریمی مقدم۱۳ آبان ۱۴۰۱، ۱۵:۳۵
درود
نود جی اس تنها یک فریمورک نیست بلکه یک محیط زمان اجرا هم محسوب میشه و شما میتونید از طریق ترمینالی که داره اجرا بگیرید.
زهرا۰۸ آذر ۱۴۰۰، ۱۰:۲۳
سلام سایتتون از نظر ریسپانسیو مشکل داره و این اصلا خوب نیست
Nazanin KarimiMoghaddam۰۸ آذر ۱۴۰۰، ۱۵:۲۳
درود
بله در حال رفع این مشکل هستیم و از صبر و شکیبایی تون ممنونیم:)
پدرام۱۳ مرداد ۱۴۰۰، ۰۷:۴۰
زمانی که از php به node مهاجرت کردم تازه فهمیدم برنامه نویسی یعنی چی فقط پایتون این وسط تو گلوم گیر کرده نمیدونم چه قدر ارزش یادگیری داره پایتون بهتره یا نود موندم توش
نازنین کریمی مقدم۱۳ مرداد ۱۴۰۰، ۱۸:۱۰
درود
بستگی به کاربردش داره، اما چون پایتون خیلی رو به رشده و خیلی هم قدرتمند و هم یادگیریش نسبت به باقی زبانها راحتتره، توصیه میکنم حتما سراغش برید.
Hanie۱۴ آبان ۱۳۹۹، ۱۲:۴۱
ممنواز توضیحان خیلی خوب و کاملتون
رضا قطعی۲۳ مرداد ۱۳۹۹، ۱۴:۱۸
سلام. با تشکر از شما. بسیار واظح توضیح دادین.
فائقه نامور۲۶ مرداد ۱۳۹۹، ۱۵:۳۸
سلام
ممنون از توجه و همراهی شما.
۲۳ مرداد ۱۴۰۲، ۰۸:۱۹
واضح با این ض هست
محبوب۲۳ خرداد ۱۳۹۹، ۱۴:۵۲
خیلی عالی بود ! امید وارم که آموزشش هم در این ویب سایت بزارند البته رایگان باشه (:
فائقه نامور۲۱ مرداد ۱۳۹۹، ۰۹:۱۱
سلام
ممنون از توجه
در تقویم تیم تولید محتوا
آموزشی مقدماتی با این عنوان هست.
سهیل بشردوست۲۱ مهر ۱۳۹۸، ۱۶:۴۲
درود، امیدوارم آموزشش بصورت مجازی بزودی در سایت در دسترس باشه برای خرید
محمد انوری۱۵ آبان ۱۳۹۸، ۱۲:۱۴
درود سهیل جان ... امیدوارم این اتفاق بیفته به زودی ...