آموزش Node.js

دسته بندی: آموزش طراحی وب

در این صفحه می خوانید :

معرفی Node.js

Node.js  یک محیط زمان اجرای متن باز و cross-platform (چندسکویی) برای جاوا اسکریپت است که کد جاوا اسکریپت را در خارج از یک مرورگر اجرا می کند. Node.js  به توسعه دهندگان اجازه می دهد تا از JavaScript برای نوشتن ابزارهای خط فرمان و اسکریپت نویسی سمت سرور استفاده کنند. در نتیجه، Node.js  با یکپارچه سازی توسعه برنامه وب حول یک زبان برنامه نویسی واحد، به جای زبان های مختلف برای اسکریپت های سمت سرور و مشتری به عنوان یک نمونه  everywhere نشان داده می شود.
گرچه .js فرمت استاندارد نام پرونده برای کد JavaScript است، اما نام "Node.js" در این زمینه به پرونده خاصی اشاره نمی کند و صرفاً نام محصول است. Node.js دارای معماری مبتنی بر رویداد است که توانایی ورودی /خروجی ناهمگام یا غیر همزمان را دارد. این گزینه های طراحی با هدف بهینه سازی توان و مقیاس پذیری در برنامه های وب با بسیاری از عملیات ورودی / خروجی و همچنین برای برنامه های وب در زمان واقعی (به عنوان مثال ، برنامه های ارتباطی در زمان واقعی و بازی های مرورگر) انجام می شود.
پروژه توسعه توزیع شده Node.js که توسط بنیاد Node.js اداره می شود، توسط برنامه پروژه های همکاری بنیاد لینوکس تسهیل می شود.

تاریخچه Node.js

نود جی اس در ابتدا توسط Ryan Dahl در سال 2009 نوشته شد. نسخه اولیه تنها از لینوکس و Mac OS X پشتیبانی می کرد. توسعه و نگهداری آن توسط Dahl هدایت شد و بعداً توسط Joyent حمایت شد.
Dahl این پروژه را در افتتاحیه JSConf اروپا در تاریخ 8 نوامبر 2009 نشان داد. Node.js موتور Google's V8 JavaScript ، یک حلقه رویداد و یک API سطح پایین I / O را ترکیب کرد.
در ژانویه 2010 ، یک مدیر بسته برای محیط Node.js به نام npm معرفی شد. مدیر بسته امکان انتشار و به اشتراک گذاری کد منبع کتابخانه های Node.js را برای برنامه نویسان آسانتر می کند و به منظور ساده سازی نصب ، به روز رسانی و حذف کتابخانه ها طراحی شده است. در ژوئن 2011 ، مایکروسافت و Joyent نسخه ویندوز Node.js را اجرا کردند. اولین ساخت Node.js با پشتیبانی از ویندوز در ژوئیه 2011 منتشر شد.

در ژانویه 2012 ، Dahl  کنار رفت و با همکاری Isaac Schlueter، همکار و سازنده npm ، مدیریت این پروژه ارتقا یافت. در ژانویه سال 2014 ،Schlueter  اعلام کرد که Timothy J. Fontaine  هدایت این پروژه را بر عهده خواهد گرفت.
در دسامبر سال 2014 ، Fedor Indutny نسخه ای از Node.js به نام  io.js را شروع کرد.  با توجه به درگیری داخلی بر سر حاکمیت Joyent ، io.js  به عنوان یک گزینه جایگزین برای حاکمیت باز با کمیته فنی جداگانه ایجاد شد. برخلاف Node.js ، نویسندگان برنامه ریزی کرده اند io.js را با جدیدترین نسخه های موتور Google V8 JavaScript  به روز نگه دارند.
در فوریه 2015 ، هدف از تشکیل یک بنیاد خنثی Node.js اعلام شد. تا ژوئن سال 2015 ، انجمن های Node.js و io.js رای دادند که در بنیاد Node.js با هم همکاری کنند.
در سپتامبر 2015 ، Node.js v0.12  و io.js v3.3 دوباره با هم در Node v4.0 ادغام شدند. این ادغام ویژگی های V8 ES6 را در Node.js با یک چرخه انتشار پشتیبانی طولانی مدت آورده است. از سال 2016 ، وب سایت io.js توصیه می کند که توسعه دهندگان به Node.js برگردند و به دلیل ادغام هیچ نسخه دیگری از io.js  برنامه ریزی نشده است.

ویژگی ها و کاربردهای Node.js

نود جی اس امکان ایجاد سرورهای وب و ابزارهای شبکه را با استفاده از JavaScript و مجموعه ای از "ماژول ها" فراهم می کند که عملکردهای مختلف هسته را کنترل می کنند. ماژول ها برای سیستم فایل I / O ، شبکه سازی ( DNS ، HTTP ، TCP ، TLS / SSL یا UDP )، داده های باینری (بافر)، توابع رمزنگاری، جریان داده ها و سایر عملکردهای اصلی ارائه شده اند. ماژول های Node.js از API استفاده می کنند که برای کاهش پیچیدگی نوشتن برنامه های سرور طراحی شده است.
اگرچه در ابتدا سیستم ماژول مبتنی بر الگوی ماژول های رایج است، اما معرفی جدید ماژول ها در مشخصات ECMAScript باعث شده است که مدل استفاده از ماژول های ECMAScript در Node.js به طور پیش فرض تغییر جهت دهد.
نود جی اس به طور رسمی در لینوکس، macOS و مایکروسافت ویندوز 7 و سرور 2008 (و بعد از آن) پشتیبانی می شود. کد منبع ارائه شده همچنین ممکن است بر روی سیستم عاملهای مشابه با آنهایی که از طرف اشخاص ثالث پشتیبانی یا ایجادمی شود نیز ساخته شود تا از بقیه مانند سرورهای NonStop و Unix پشتیبانی کند. می توان آن را با CoffeeScript (جایگزین جاوا اسکریپت)، Dart  یا TypeScriptیا هر زبان دیگری که می تواند به JavaScript کامپایل کند، نوشت.
در درجه اول برای ساختن برنامه های شبکه مانند سرورهای وب استفاده می شود. مهمترین تفاوت بین Node.js و PHP در این است که اکثر توابع در بلوک PHP، دستورات فقط بعد از اتمام دستورات قبلی اجرا می شوند، در حالی که توابع Node.js غیر مسدود کننده هستند (دستورات به طور همزمان یا حتی به صورت موازی اجرا می شوند) و از علامت های برگشتی برای تکمیل یا خرابی سیگنال استفاده می کنند.
نود جی اس برنامه نویسی event-driven را برای سرورهای وب به ارمغان می آورد و امکان توسعه سرورهای سریع وب در JavaScript را فراهم می سازد. توسعه دهندگان می توانند با استفاده از یک مدل ساده برنامه نویسی مبتنی بر رویداد که از لینک های برگشتی استفاده می کند ، بدون استفاده از نخ ، سرورهای مقیاس پذیر ایجاد کنند. Node.js سهولت یک زبان برنامه نویسی (JavaScript) را با قدرت برنامه نویسی شبکه یونیکس متصل می کند.
نود جی اس از وقتی که به صورت متن باز تحت مجوز BSD ساخته شد، روی موتور Java V8 GoogleS ساخته شد. با اصول اینترنت مانند HTTP ، DNS ، TCP  تخصص دارد. جاوا اسکریپت همچنین یک زبان شناخته شده بود که Node.js را در دسترس جامعه توسعه وب قرار داد.
هزاران کتابخانه منبع باز برای Node.js وجود دارد که اکثر آنها در وب سایت npm هستند. انجمن توسعه دهنده Node.js دارای دو لیست اصلی پستی و کانال IRC # node.js در freenode است. چندین کنفرانس و رویدادهای توسعه دهنده وجود دارد که از انجمن Node.js پشتیبانی می کند از جمله NodeConf ، Node Interactive و Summit Summit و همچنین تعدادی از رویدادهای منطقه ای.
جامعه متن باز برای سرعت بخشیدن به پیشرفت برنامه ها ، چارچوب های وب را ایجاد کرده است. چنین چارچوب هایی شامل Connect ، Express.js ، Socket.IO ، Feathers.js ، Koa.js ،Hapi.js ، Sails.js ،Hapi.js ،Meteor ،Derby و بسیاری دیگر است. بسته های متنوعی نیز برای ایجاد ارتباط با سایر زبان ها یا محیط های اجرا مانند Microsoft .NET ایجاد شده است.
IDE های رومیزی مدرن ویژگی های ویرایش و اشکال زدایی را به طور خاص برای برنامه های Node.js ارائه می دهند. IDE هایی شامل Atom ، Brackets ، JetBrains، WebStorm،Microsoft Visual Studio (با ابزارهای Node.js برای ویژوال استودیو یا TypeScript با تعریف (Node ،NetBeans ،Nodeclipse Enide Studio و Visual Studio Code. برخی از IDE های مبتنی بر وب آنلاین همچنین از Node.js پشتیبانی می کنند، مانندCodeanywhere ، Codenvy ،Cloud9 IDE ، Koding و ویرایشگر جریان تصویری در Node-RED.

چرا Node.js

نود جی اس از برنامه نویسی غیرهمزمان استفاده می کند! یک کار عادی برای وب سرور می تواند باز کردن فایل روی سرور و بازگرداندن نتیجه به مشتری باشد.

نحوه کار PHP یا ASP با یک درخواست فایل به این صورت است :

  1. درخواست را به سیستم فایل رایانه می فرستد.
  2. منتظر می ماند تا سیستم فایل باز شود و پرونده را می خواند.
  3. محتوا را به مشتری باز می گرداند.
  4. آماده رسیدگی به درخواست بعدی می شود.

و نحوه کار Node.js با یک درخواست فایل به صورت زیر است:

  1. درخواست را به سیستم فایل رایانه می فرستد.
  2. آماده رسیدگی به درخواست بعدی می شود.
  3. هنگامی که سیستم فایل پرونده را باز کرده و می خواند ، سرور محتوا را به مشتری باز می گرداند.

 نود جی اس انتظار را از بین می برد و به سادگی درخواست بعدی ادامه می یابد. نود جی اس برنامه نویسی تک رشته ای، بدون انسداد و غیر همزمان را اجرا می کند، که بسیار برای حافظه کارایی دارد.

به طور کلی ویژگیهای نود جی اس به صورت زیر است :

  • غیرهمزمانی و مبتنی بر رویداد :تمام API های کتابخانه Node.js غیرهمزمان هستند. ساسا به این معنی است که یک سرور مبتنی بر Node.js هرگز منتظر API برای بازگشت داده ها نیست. سرور بعد از فراخوانی آن به API بعد حرکت می کند و مکانیزم اعلان رویدادهای Node.js به سرور کمک می کند تا از فراخوانی API پیشین پاسخی دریافت کند.
  • بسیار سریع: از آنجاییکه در V8 جاوا اسکریپت گوگل کروم ساخته شده است، کتابخانه Node.js در اجرای کد بسیار سریع می باشد.
  • تک Threaded اما بسیار مقیاس پذیر : Node.js از یک مدل Threaded با حلقه رویداد استفاده می کند. مکانیزم رویداد به سرور کمک می کند که به یک روش غیر مسدود کننده پاسخ دهد و سرور را بسیار مقیاس پذیر می کند، به نحوی که در مقایسه با سرورهای سنتی که threads محدودی را برای رسیدگی به درخواست ایجاد می کنند، Node.js از یک برنامه ی تک threaded استفاده می کند و همان برنامه می تواند برای سرویس تعداد زیادی درخواست فراهم کند که از سرویس های سنتی مثل Apache HTTP Server بیشتر می باشد.
  • بدون Buffering :اپلیکیشن های Node.js هرگز هیچ داده ای را بافر نمی کنند. این برنامه ها به سادگی داده ها را درون chunks قرار می دهند.

Node.js چه کاری می تواند انجام دهد؟

  •  نود جی اس می تواند صفحه با محتوای پویا ایجاد کند.
  •  نود جی اس می تواند فایل ها را روی سرورcreate ، open ، read ، write ،  delete و  close کند.
  • نود جی اس می تواند داده های فرم را جمع آوری کند.
  • نود جی اس می تواند داده ها را در پایگاه داده اضافه ، حذف و اصلاح کند.

از Nodejs در موارد زیر استفاده می شود:

  • طراحی وب
  • طراحی وب سرویس
  • در IoT
  • اپلیکیشن های مبتنی بر JSONAPIs
  • اپلیکیشن های تک صفحه ای
  • Data Intensive Real-time Applications (DIRT)
  • اپلیکیشن های جریان داده
  • اپلیکیشن های I/O bound

فایل Node.js

  • فایل های نود جی اس شامل task هایی هستند که در برخی از موارد خاص اجرا می شوند.
  • یک رویداد معمولی شخصی است که سعی در دسترسی به پورت روی سرور دارد.
  • فایل های Node.js باید قبل از هرگونه نتیجه ای، روی سرور آغاز شوند.
  • فایل های Node.js دارای پسوند ".js" هستند.
آیا این نوشته را دوست داشتید؟