Nodejs چیست؟
بدون شک مدت زیادیه اقبال برنامهنویسان وب به سمت فریمورکهایی مثل PHP و ASP.net خیلی بیشتر از فریمورکهای دیگهست. اما آیا واقعا هیچ رقیبی برای این فریمورکها وجود نداره؟ بدون شک اینطور نیست. امروز میخوام یه فریمورک نسبتا جوان ولی انقلابی رو بتون معرفی کنم.
رایان دال چندسال پیش موتور جاوااسکریپت کروم یاهمون V8 رو ویرایش کرد و طوری تغییرش داد که حالا تبدیل به یه فریمورک وب خیلی جدید شده: Nodejs! (بخونید نُدجِیاِس)
خب، قبول. ولی حالا این فریمورک چه چیزایی رو به همراه آورده که ما رو به خودش ترقیب کنه؟ اینجا میخوایم همین رو بررسی کنیم.
- استقلال از سکو: ندجیاس توانایی اجرا شدن روی همهی سیستمعاملهای موجود مثل Windows، Linux و Mac OSX رو داره.
- زبان آشنا: تقریبا همهی برنامهنویسای وب مدتها با جاوااسکریپت برنامهنویسی کردن و از این نظر نیاز به آموزش چندانی ندارن.
- مدیر بستهی اختصاصی (NPM): کنار ندجیاس یه مدیر بستهی خیلی جمع و جور نصب میشه که به آسانی میشه باهاش بستههای مورد نیاز توی برنامهنویسی رو با یه دستور نصب کرد. همچنین میشه به آسونی بستههای نوشته شده توسط خودمون رو هم با دیگران به اشتراک بذاریم تا ازشون استفاده کنن.
- محیطهای توسعه: روز به روز به محیطهای توسعهی ندجیاس داره افزوده میشه. برای برنامهنویسی ند میشه از ادیتورهایی مثل Emacs، Vim، SublimeText، jEdit، Adobe Brackets و Atom استفاده کرد. علاوه بر این IDEهایی مثل IntelliJIDEA، KomodoIDE، WebMatrix، Nodeclipse، Nide ابزارهایی رو برای برنامهنویسی ند فراهم کردن! ولی این همهش نیست. میشه توی محیطهایی مثل Cloud9 بصورت آنلاین برنامهنویسی ند کرد!
- خداحافظ وب سرور: توی ند دیگه هیچ نیازی به یه وبسرور جدا مثل آپاچی نیست. ند خودش همهی زحمات رو تقبل میکنه.
-
دیدگاه جدید: توی فریمورکهای مشهوری مثل PHP، به ازای ورود هر کلاینت جدید یه ریسمان (Thread) ساخته میشه. ند این رسم رو کنار گذاشته و ادعا کرده که با میزان منابع خیلی کمتر و بدون ایجاد ساختار چندریسمانی میتونه کاربران خیلی بیشتری رو مدیریت کنه! یا حتی سیستمهای توزیع شدهی خیلی بزرگتری رو ایجاد کنه! در ادامه به این مطلب بیشتر میپردازم. بیشتر بخونید: Non-blocking Algorithm
- برنامهنویسی فانکشنال: این رویکرد به نسبت جدید دقیقا حلقهی گمشدهی موجود توی برنامهنویسی شیءگرای کلاسیک رو پوشونده. البته یادمون نره که جاوااسکریپت همزمان یه زبان برنامهنویسی شیءگرا هم هست. بیشتر بخونید: Functional Programming
- توسعهی آزاد: این فریمورک با لایسنس MIT منتشر میشه که یعنی متن بازه و آزاده!
خب تا اینجا خیلی از خوبیای ند رو مطرح کردم. اما در ادامه دوتاشون رو بیشتر توضیح خواهم داد.
اول اینکه «چطور ند بدون سیستم چندریسمانی درخواستها رو مدیریت و پاسخدهی میکنه؟» پاسخ توی یه تکنیک برنامهنویسی به نسبت نوین به نام برنامهنویسی Non-blocking نهفتهست. این یعنی هیچ خطی از ند باعث نمیشه اجرای برنامه با تاخیر مواجه شه. اینجوری به نوبت و بدون تاخیر به درخواستها پاسخ داده میشه!
«یعنی چی؟ مگه میشه شما یه فایل رو برای خوندن باز کنی یا به پایگاه داده متصل شی و برنامه متوقف نشه؟»
بله! توی برنامهنویسی کلاسیک ما به برنامه میگفتیم «این فایل رو باز کن و در خط بعد توش فلان رشته رو بنویس» اما حالا توی این برنامهنویسی بش میگیم «این فایل رو باز کن و فعلا برو بقیه درخواستها موندن تو صف! هروقت بازش کردی بم بگو تا بگم چکارش کنی!». اینجوری دیگه برنامهی ما تو هیچ خطی بلوکه نمیشه و میتونه به همهی درخواستها با یه ریسمان پاسخ بده!
«چرا وبسرور در ند نیاز نیست؟»
چون ند یه رویکرد جدید دیگه هم داره! شما در زمان برنامهنویسی PHP یا ASP.net و... یه وبسرور مثل آپاچی رو اجرا میکردید و ازش میخواستید در زمان مناسب برنامهی شما رو برای پاسخگویی اجرا کنه. حالا توی ند شما یه برنامه مینویسید که وبسرور رو اجرا میکنه.
برای اطلاعات بیشتر میتونید به وبسایت ندجیاس و وبسایت فارسی ندجیاس مراجعه کنید.