تبلیغات

Node.js چیست؟ همه چیز درباره‌ی نود جی اس که باید بدانید!

نوشته شده توسط هادی اکبرزاده

Node.js چیست؟ همه چیز درباره‌ی نود جی اس که باید بدانید!


Node.js (نود جی اس، NodeJS) پلتفرمی است بر مبنای موتور جاوا اسکریپت کروم که به منظور ایجاد برنامه‌های سریع و گسترش پذیر به وجود آمده است. Node.js از مدل رویدادگرا و non-blocking برای انجام عملیات I/O بهره می‌برد. از این‌رو، Node.js یک پلتفرم سبک و کارا برای پیاده سازی برنامه‌های Real-time و مبتنی بر داده است که می‌توانند به راحتی در سرورهای نامتمرکز اجرا شوند. Node.js نام تجاری متعلق به شرکت Joyent می‌باشد.

به بیانی دیگر، Node.js پلتفرمی بر اساس موتور جاوا اسکریپت گوگل V8 است که برای ساخت سریع‌تر و مقیاس‌پذیرتر اپلیکیشن‌های تحت شبکه می‌باشد. این پلتفرم بر اساس زبان جاوا اسکریپت بوده و امروزه توانسته با استفاده از تکنولوژی رویداد محوری که درون خود پایه گذاری کرده است، بسیاری از برنامه‌نویسان را جذب خود کند.بنابراین انتظار ما این است که تا به این‌جای توضیحات، حداقل به نکات زیر در مورد NodeJS پی برده باشید:

  • یک پلت‌فرم یا (Platform = سکو) سمت سرور
  • برای اجرا حاوا اسکریپت در سمت سرور
    همانطور که در تکنولوژی Apache از PHP استفاده می‌کنید، در این‌جا از JavaScrtipt استفاده می‌شود؛ اما تفاوت‌های بسیار زیادی وجود دارد که به آن‌ها اشاره خواهیم کرد.
    پس درواقع Node.js، جاوا اسکریپتی است که سمت سرور اجرا خواهد شد.
  • Node.js یک پلت فرم است نه یک کتابخانه‌ی برنامه‌نویسی یا یک فریم ورکی (چارچوب) که مربوط به زبان‌های برنامه‌نویسی تازه کشف شده باشد!
    ما از این پلتفرم استفاده می‌کنیم تا کدهای جاوا اسکریپتی را روی سرور برایمان اجرا کند.
بیشتر بدانیم: پلت‌فرم چیست؟
سکو یا پلت‌فرم (به انگلیسی: Platform) در رایانه‌ها و وسایل الکترونیکی به سخت‌افزار و نرم‌افزاری گفته می‌شود که به‌عنوان زیرساخت در یک سیستم وجود دارد. در واقع سکو بستری است که نرم‌افزارهای دیگر می‌توانند بر روی آن اجرا شوند یا به‌طور کلی‌تر چارچوبی از تکنولوژی است که به تکنولوژی‌های دیگر اجازهٔ اجرا می‌دهد. مطالعه‌ی بیشار در ویکی‌پدیا

 

بیشتر بدانیم: فریم ورک چیست؟
فریم‌ ورک (Framework) که در تعبیر فارسی به چارچوب کاری از آن یاد می‌شود؛ در واقع یک ساختار نظری و یا پیاده‌سازی شده است که در زمینه کاری شما، شما را پشتیبانی کرده و یا راهنمایی می‌کند تا کارها را با سرعت، دقت، راحت‌تر و گاهی با امنیت بیشتر انجام دهید.

در نگاه اول فریم ورک به هر کتابخانه ای گفته می شود که از قبل نوشته شده باشد؛ اما فریم ورک چیزی بیش از یک کتابخانه است. به عنوان مثال یک شرکت سازنده خودرو در نظر بگیرید. آیا این شرکت ها هر بار برای ساختن خودرو جدید تمام نقشه ها را از از اول طراحی می کنند؟ مطمئنا جواب منفی هست.

فریم ورک‌ها در برنامه نویسی چنین معنی دارند. اصولا فریم ورک‌ها بر اساس ساختار برنامه نویسی شی گرایی تحت عنوان Model , View , Controller به اختصار MVC ساخته می شوند. اما نمی توان گفت کتابخانه‌هایی که بر اساس شی گرایی ساخته نشده اند فریم ورک نیستند. عموما پرتال ها و سیستم‌های مدیریت محتوا مثل جوملا، مامبو، نیوک، وردپرس و … در نهایت تبدیل به یک کتابخانه یا فریم ورک می‌شوند. مطالعه‌ی بیشتر در ویکی‌پدیا

کمی بیشتر درباره Node.js بدانیم

Node.js در سال ۲۰۰۹ متولد شد همانطور که پیش در گفته شد، بر اساس موتور جاوا اسکریپتی گوگل، موسوم به V8 طراحی شده است. اگر بخواهیم درباره‌ی این موتور توضیحی مختصر بدهیم باید بگوییم که این موتور توسط گوگل طراحی شده تا کدهای جاوا اسکریپتی را درون خودش سریع‌تر از قبل کامپایلر و اجرا نماید. این موتور به صورت متن باز منتشر شده و به زبان برنامه‌نویسی ++C نوشته‌شده است. ضمن اینکه از استاندارد اکما اسکریپت نیز بهره می‌برد. هر جا که شما دوست دارید تا جاوا اسکریپت را اجرا کنید، این موتور می‌تواند به شما کمک کند. امروزه یکی از دلایل استفاده زیاد از Node.js را همین موتور قدرتمند می‌دانند.

  • V8 به زبان C++ نوشته شده است و توسط اسکریپت ECMA پیاده سازی شده است.
  • یک موتور جاوا اسکریپت است که از کامپایلر JIT برای پردازش و اجرای کدهای جاوا اسکریپت است.
  • در گوگل کروم استفاده می شود ولی می‌تواند به صورت مستقل نیز به کار برده شود.
  • V8 اپن سورس است بنابراین شما می توانید V8 را دانلود و در هر برنامه‌ای که می‌خواهید جاوا اسکریپت در آن اجرا شود قرار دهید و به یک مرورگر محدود نمی شود.
  • در سیستم عامل‌های مختلفی مانند Windows XP, Vista, Windows7+, Mac OS X 10.5+, and Linux OS نیز اجرا می شود.
  • بر اساس تعریف ویکی پدیا، V8 کدهای جاوا اسکریپت را قبل از اجرا به زبان ماشین تبدیل می کند.

Thread و Event (مهم‌ترین ویژگی NodeJS)

و حالا می‌خواهیم درباره مهم‌ترین ویژگی Node.js صحبت کنیم. عاملی که باعث شده است تا بسیاری از برنامه‌نویسان امروزه به دنبال استفاده از Node.js باشند. قبل از اینکه بخواهیم درباره این ویژگی صحبت کنیم، باید روال عادی در وب سرورهای سمت سرور را بررسی کنیم تا مزیتی که Node.js در اختیار ما قرار می‌دهد، پررنگ‌تر جلوه کند.

در زبان‌های سمت سرور موجود مانند PHP، هر کاربری که به سرور متصل می‌شود، یک Thread به ازای آن کاربر به وجود می‌آید. اگر تعداد اتصال‌های همزمان افزایش یابد، ناچار به افزایش منابع مانند حافظه‌ی RAM و افزایش سرور های موجود خواهیم بود که این به نوبه‌ی خود سبب افزایش هزینه‌ها خواهد شد.
Node.js این مشکل را به وسیله‌ی نحوه‌ی تغییر اتصال به سرور حل می‌کند. در این روش، هر اتصال به صورت یک رویداد اجرا می‌شود و نه به صورت یک Thread.

بنابراین، Node.js به شما امکان می‌دهد که تا با کمک JavaScript برای سمت سرور برنامه بنویسید و فقط یک Thread ایجاد کنید و تمام درخواست‌ها را به صورت رویداد (Event) مدیریت کنید! درست مثل مدیریت Event ها در جاوا اسکریپت سمت کلاینت!


فرض کنید، شما در حال تایپ آدرس یک وب‌سایت هستید یا وارد صفحه‌ای در یک وب‌سایت می‌شوید یا هرگونه ارتباطی که شما به‌عنوان کاربر با سرور ایجاد می‌کنید، در زبان‌های برنامه‌نویسی سمت سرور، باعث ایجاد یک Thread (یک موضوع یا یک بحث جدید) می‌کند و این Thread زمانی بسته می‌شود که شما به درخواست خود رسیده باشید؛ مثلا صفحه‌ی وب‌سایتی که می‌خواهید برای شما بازشده باشد.
حالا فرض کنید که شما قرار است وارد یک وب‌سایت پرطرفدار شوید، وب‌سایتی که بازدیدکنندگان آن بسیار زیاد هستند و طبعاً همه‌ی این افراد در بین صفحات این وب‌سایت در حال جستجو کردن هستند یا مطالب مختلف را مشاهده می‌کنند؛ در این حالت است که Thread های بسیار زیادی ایجاد می‌شوند. این‌جاست که سرور احتمالاً به سقف می‌چسبد و بایستی که سرورهای موجود را افزایش دهیم که خود یک هزینه اضافی است. البته باید بگوییم که مشکل اصلی ما در این‌جا، حجم بالای اطلاعات ورودی و خروجی است که به روشی که در بالا گفتیم صورت می‌گیرد.

در مثال بالا حالتی را گفتیم که معمول بود اما حال می‌خواهیم برخورد Node.js را در این مواقع بررسی کنیم. تفاوتی که Node.js دارد این است که از عملیات ورودی-خروجی یا I/O به‌صورت رویداد محور استفاده می‌کند که دارای ویژگی non blocking است و مسدود شونده نیست (اصطلاحا به این روش non blocking I/O می‌گویند). درواقع در این روش، هر اتصالی که کاربر با سرور ایجاد می‌کند به‌صورت یک رویداد تعریف می‌شود نه یک Thread (تمامی درخواست‌ها و اتصالات به‌صورت رویدادها مدیریت می‌شوند درحالی‌که فقط یک Thread شکل‌گرفته است). در یک جمله اگر بخواهیم این مورد را خلاصه کنیم این است که با ایجاد حالت رویداد محور، ما برای رسیدن به نتیجه‌ای که مخاطب به دنبال آن است، دیگر نباید منتظر عملیات ورودی-خروجی باشیم، اینجا صرفا رویدادها هستند که دریافت نتیجه را سبب می‌شوند.
آخرین ویژگی که درباره آن می‌خواهیم صحبت کنیم، ماژول‎‌ها و امکاناتی است که Node.js آن‌ها را دارد و کار شما در استفاده از این پلتفرم راحت‌تر خواهد کرد.

استفاده از Nodejs

Node.js  همچنین برای اپلیکیشن های موبایل که اساسا به API Server برای سرویس دادن به درخواست های همزمان وابسته است، ایده آل می باشد. از حمله اپلیکیشن‌های چت یا بازی‌های آنلاین.
بناراین می‌توان گفتکه از این پلت‌فرم می‌توان در اپلیکیشن‌های زیر استفاده کرد:

  • تجارت الکترونیک
  • شبکه های اجتماعی
  • سرویس های بلادرنگ
  • جریان داده‌ها

این پلت‌فرم، قابلیت اجرا شدن در انواع سیستم‌عامل‌های مختلف ویندوز، لینوکس و مک را دارد و شما کافیست تا نرم‌افزار نود جی اس را در یکی از سرورهایی که شامل این پلت‌فرم هستند اجرا کرده و سورس کد خود را توسط آن فراخوانی کنید.

نگران برنامه نویسی در نود جی اس نیز نباشید چرا که این پلت فرم، جامعه‌ی برنامه نویسی بزرگی را در اختیار دارد تا به شما در ادامه‌ی کارتان کمک کنند و هم‌چنین شرکت‌های بزرگی همچون Yahoo ،Microsoft ،Paypal ،eBay و … نیز در پروژه‌های خود از این پلت‌فرم استفاده می‌کنند و می‌تواند ملاکی برای اعتبار این پلتفرم به‌حساب آورد.

این پلتفرم، خودش صاحب یک وب سرور است؛ لذا اگر شما از یک وب سرور همانند آپاچی استفاده می‌کنید، Node.js از آن استفاده نمی‌کند! چون خودش دارد!
و برای این‌که برنامه‌ی شما را ابه حالت اجرا در آورد، از طریق خطوط دستوری Command Line استفاده می‌کند. (در ویندوز، CMD و در لینوکس، Terminal)

 

نتیجه گیری

با توجه به اطلاعاتی که به دست آوردیم، NodeJS می‌تواند برای وب‌سایتی با بازدیدکنندگان زیاد، بسیار خوب عمل کند. پلتفرمی که دارای ماژول‌ها و امکانات زیادی است که شمارا می‌تواند کمک کند.
Node.js مرتبط با سرعت و کیفیت بیشتر کار خود را انجام می‌دهد و این باعث شده است که حتی برنامه‌نویسان غیرحرفه‌ای هم به سراغ آن بروند و برنامه‌های حرفه‌ای بر اساس آن طراحی کنند.

اگر به دنبال یک فضایی هستید که کدهای جاوا اسکریپتی خود را اجرایی کنید و خیلی سریع به درخواست مخاطب خود جواب دهید، Node.js می‌تواند یک انتخاب خوب برای شما باشد؛ ضمن این‌که برای داشتن یک انتخاب خوب و مطالعه راجع به سایر زبان‌های برنامه‌نویسی و آموزش‌های حوزه وب، می‌توانید در فول‌کده به اهداف خود برسید.

خلاصه‌ی مقاله‌ی معرفی Node.js را در نقشه‌ی ذهنی زیر می‌بینید:

نکات نهایی

  • Node.js یک کتابخانه از جاوا اسکریپت نیست بلکه یک پلتفرم است که جاوا اسکریپت را سمت سرور اجرا می کند.
  • اپلیکیشن های نود بر روی هاست موجود شما نمی توانند اجرا شوند
  • شما می‌توانید از VPS و سرروهای مشخص برای نصب نود و اجرای برنامه خود استفاده کنید.
  • راحت ترین روش برای گسترش اپلیکیشن Node استفاده از سرویس های مقیاس پذیر مانند Heroku که کاملا رایگان هستند، می باشد.

برگرفته از barnamenevisan و lydaweb و در نهایت فول‌ کده

آموزش نصب و راه اندازی و ایجاد اولین پروژه
تبلیغات
0
کانال تلگرام فول کده

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

هادی اکبرزاده

[ مدیر فول کده ]

دانشجوی ارشد شبیه ساز هوشمند و مدیر فول کده
Telegram

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده بدون دیدگاه