استفاده از Node.js محدودیت‌ها را از بین می‌برد

4 دیدگاه
دسته بندی: آموزش, لینوکس
استفاده از Node.js محدودیت‌ها را از بین می‌برد

فرض کنید وارد یک فروشگاه شده‌اید که صاحب آن هیچ حرفی نمی‌زند. در واقع نمی‌تواند چیزی بگوید تا شما از او سوال بپرسید! قبل از پیدایش Node.js، چنین رویکردی در فضای اینترنت، بین مرورگر (مشتری) و سرور (صاحب فروشگاه) وجود داشت!

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

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

Nodejs چیست؟ تاریخچه مختصری از آن

تا قبل از ارائه Node Js جاوا اسکریپت یک زبان سمت کلاینت بود؛ یعنی فقط امکان برنامه‌نویسی در مرورگر وجود داشت.

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

وب‌سایت رسمی نود جی اس، این پلتفرم را اینگونه تعریف می‌کند:

Node.js محیطی است برای نوشتن کدهای جاوا اسکریپت که روی موتور اجرای کد جاوا اسکریپت مرورگر کروم، با نام V8 ساخته شده است.

هدف این پلتفرم این است که سرعت اجرای برنامه‌های تحت وب یا شبکه را افزایش دهد. همچنین کاهش فشار سرور در زمان‌هایی که بازدید زیاد است، از دیگر وظایف نود جِی اِس به شمار می‌رود.

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

حتما بخوانید:  سرور مجازی بورس چیست؟ چه کسانی به آن نیاز دارند؟

نود جِی اِس

 

بیایید کاربردهای این پلتفرم را با هم بررسی کنیم.

Node.js چه کاربردی دارد؟

مهم‌ترین کاربرد Node.js در ساخت اپلیکیشن‌های Real-Time (ارتباط دوطرفه) است. مثل تلگرام و دیگر پیام‌رسان‌ها. در واقع کاربرد آن را می‌توان در نتایج انقلابی که رقم زد مشاهده کرد. هرجایی که نیاز به ارتباط دوطرفه بین مرورگر و سرور وجود داشته باشد، نود جِی اِس کاربرد دارد.

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

چرا باید از Node.js استفاده کنیم؟

برای پاسخ به این سوال، باید بدانید پلتفرم نود جِی اِس چه ویژگی‌هایی برایمان به ارمغان می‌آورد.

  1. مهم‌ترین ویژگی سرعت بالا است. Node.js در مقایسه با PHP و Ruby به‌ مقدار قابل‌توجهی سریع‌تر است.
  2. ویژگی بعدی، امنیت بالا در برابر ترافیک ورودی غیرعادی است. مخصوصاً زمانی که سرور مورد هجوم حملات DDOS قرار گرفته و دیگر نرم‌افزارها مانند SSH همچنان مشغول فعالیت هستند.
  3. یکی دیگر از ویژگی‌های مفید این پلتفرم، امکان دسترسی‌ای است که به توسعه‌دهنده‌های سمت کلاینت (مرورگر) می‌دهد. این دسترسی به توسعه‌دهندگان کمک می‌کند تا هنگام نوشتن API (تعیین‌کننده ارتباطات بین قسمت‌های مختلف اپلیکیشن) به تمام اطلاعات دسترسی داشته باشند.

پایین بودن زمان پاسخ‌دهی در Node.js

بسیاری از وب‌سرورها بر اساس روش Threading کار می‌کنند؛ یعنی برای هر درخواست یا Request دریافتی، یک Thread ایجاد می‌کنند. با ایجاد Threadهای جدید، هربار بخشی از فضای رم، مثلا 1 مگابایت از آن اشغال می‌شود. این پروسه تا جایی ادامه پیدا می‌کند که ظرفیت رم سرور تکمیل شود و توانایی پذیرش درخواست‌های جدید را نداشته باشد. به همین خاطر استفاده از روش Thrading برای مصارفی که نیازمند تعداد زیادی از کانکشن‌های هم‌زمان هستند، گزینه مناسبی نیست!

Node.js این مشکل را حل می‌کند:

این پتلفرم ماهیتی Single-Threaded دارد که به آن Asynchronous هم می‌گویند. به زبان ساده یعنی نود جِی اِس برای هر درخواستی که از راه می‌رسد، پروسه‌ای جدید آغاز نمی‌کند، بلکه پروسه‌ای دائمی برای رسیدگی به تمام درخواست‌ها همواره در جریان است.

پس می‌توان گفت با استفاده از پلتفرم Node.js می‌توانید کارها را به‌صورت هم‌زمان پیش ببرید؛ چراکه هیچ‌کدام از پردازش‌های مرتبط با I/O، در کارهای دیگر اختلال ایجاد نمی‌کند. کدهای جاوا اسکریپت در Thread اصلی و عملکردهای مرتبط با I/O  در Threadهای دیگر اجرا می‌شوند.

حتما بخوانید:  چگونگی اتصال به VPS از طریق موبایل (IOS و اندروید)

کمیک Node.js

موتور V8 نود جِی اِس و قابلیت‌های مفیدی که دارد

موتور مجازی Google V8 که پذیرای پلتفرم Node.js است و کدهای جاوا اسکریپت را اجرا می‌کند، توانایی تبدیل کدهای قابل‌خواندن توسط انسان به کدهای قابل‌خواندن توسط ماشین را دارد. به این قابلیت کامپایل (Compile) می‌گویند. این قابلیت با تبدیل کدها، باعث افزایش سرعت چشم‌گیر نود جِی اِس می‌شود.

آخرین دلیلی که استفاده از Node.js را توجیه می‌کند، جامعه بزرگ توسعه‌دهندگانی است که از این پلتفرم استفاده می‌کنند. همچنین کتابخانه‌های Open Source زیادی به‌عنوان مرجع این پلتفرم شناخته می‌شوند. این کتابخانه‌ها باعث می‌شوند سرعت کارتان بالا برود؛ چراکه نیاز نیست برای هر مفهوم اولیه‌ای اقدام به نوشتن کد کنید!

در نمودار زیر، بخش‌های مهمی از Node.js را می‌بینید:

node js چیست

حالا وقت آن رسیده که مزایا و معایب این پلتفرم را بررسی کنیم:

خوبی‌ها و بدی‌های پلتفرم Node.js

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

مزایای Node.js

بسیاری از نکات مثبت این پلتفرم، در بخش قبلی که چرایی استفاده از نود جِی اِس را توضیح دادیم مشخص شد؛ اما اگر بخواهیم به‌صورت موردی در مورد مزایای آن صحبت کنیم باید به موارد زیر اشاره کنیم:

  • پاسخگوی تعداد زیادی کاربر و سرعت بالا
  • پایین بودن زمان پاسخ‌دهی در این پلتفرم
  • خطایابی ساده و سریع
  • جامعه کاربری بزرگ و وسیع
  • متن‌باز بودن
  • سازگاری با سیستم‌عامل‌های مختلف اعم از مک، ویندوز و انواع توزیع‌های لینوکس
  • پشتیبانی از Caching

همان‌طور که گفتیم این پلتفرم بی‌عیب هم نیست!

معایب Node.js

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

  • وابستگی شدید هر نود جِی اس به توسعه‌دهنده خودش!
  • عدم پشتیبانی کامل توسط بیشتر هاست‌های اشتراکی

نکته: تنها گزینه موجود برای اجرای کدهای جاوا اسکریپت در سمت سرور یا Backend، پلتفرم Node.Js است. اگر قصد استفاده از آن را دارید باید از هاستی استفاده کنید که مناسب این کار باشد. خواندن مقاله هاست Node.js برای انتخاب بهتر کمک‌تان می‌کند.

دختر برنامه نویس

دیتابیس‌های محبوب Node.js میان توسعه‌دهندگان

دیتابیس یا پایگاه داده محلی مجازی است که می‌توانید داده‌ها و اطلاعات‌تان را در آن ذخیره کنید. (می‌توانید مقاله پایگاه داده چیست را مطالعه کنید) کدهایی جاوایی که توسط توسعه‌دهندگان در محیط Node.js نوشته می‌شوند هم نیازمند دیتابیس هستند.

حتما بخوانید:  مدیریت کاربران (Users) در دایرکت ادمین

MongoDB محبوب‌ترین انتخاب میان توسعه‌دهندگان مختلف نودجی‌اس است. همچنین به نظر می‌رسد که جایگاه‌های بعدی متعلق به دیتابیس‌های Redis، PostgreSQL و MySQL باشند.

آموزش نصب Node.js در لینوکس

به دو روش می‌توان پلتفرم Node.Js را در سیستم‌عامل لینوکس نصب و اجرا کرد:

روش اول : مطابق روند زیر عمل کنید

همیشه آخرین نسخه stable را از طریق لینک زیر دانلود کنید.

https://nodejs.org/dist/

در دستورات نصب با توجه به نسخه دانلود شده، نسخه جدید را در دستورات زیر جایگزین v10.8.0 نمایید.

جهت نصب، دستورات زیر را در سرور اجرا کنید:

wget https://nodejs.org/dist/v10.8.0/node-v10.8.0.tar.gz

tar zxvf node-v10.8.0.tar.gz

cd node-v10.8.0

./configure

make ; make install

سپس جهت اطمینان از درستی نصب، دستور زیر را وارد کنید:

node -v

درصورتی که نصب بدون مشکل انجام شده باشد، در نهایت شماره نسخه نصب شده را می‌بینید.

روش دوم – نصب Node.js و NPM در CentOS

جهت نصب، دستورات زیر را اجرا کنید:

yum install -y gcc-c++ make

curl--silent --location https://rpm.nodesource.com/setup_10.x|sudobash-

توجه داشته باشید که باید به‌جای عدد 10 در دستور بالا، همیشه آخرین نسخه stable را جایگزین نمایید.

در مرحله بعد، دستور زیر را اجرا کنید:

yum –y installnodejs

پس از آن جهت اطمینان از درست نصب شدن نود جِی اِس، دستور زیر را بنویسید:

node -v

سپس برای اطمینان از نصب NPM از دستور زیر استفاده کنید:

npm –v

چنانچه نصب بدون مشکل انجام شده باشد، درست مانند روش اول، در نهایت شماره نسخه نصب شده را مشاهده خواهید کرد.

سخن پایانی

Node.js پلتفرمی است که می‌توان در آن برای سمت مقابل مرورگرها، یعنی سرورها، کدهای جاوا اسکریپت نوشت. تا پیش از عرضه این پلتفرم، امکان انجام این کار وجود نداشت. درضمن نود جِی اِس تنها راه برای نوشتن کدهای جاوا در سمت سرور یا Backend است.

توسعه دهنگان مشغول کار هستند

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

سرورهای مجازی و سرورهای اختصاصی ایران سرور، کاملاً با نود جِی اِس سازگار هستند. می‌توانید با کلیک روی هرکدام، نسبت به خرید آن‌ها اقدام کنید.

 

5/5 - (1 امتیاز)

مایلید هر دو هفته یک ایمیل مفید دریافت کنید؟

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

نظرات کاربران

4 دیدگاه. دیدگاه تازه ای بنویسید

  • سلام استاد
    بنده درباره یک مسئله ای نزدیک به یک هفته تحقیق کرم ولی به نتیجه ای نرسیدم. ممنون میشم اگه کمکم کنید:

    1- من میخوام یک سایت شبیه وبسایت آپارات ( وبسایت اشتراک ویدئو و استریم زنده ) طراحی کنم. با توجه به میزان بازدید بالا – حجم ویدئو ها و غیره: به نظر شما از node.js استفاده کنم یا php ؟ برای همچین سایتی درحال حاظر از چه زبانی استفاده کنم؟

    2- حالا اگه باز بخوام یه سیستم چت سطح متوسط هم به سایت اضافه کنم چطور؟ حالا از چه زبانی استفاده کنم؟

    3- یک وبسایت در سروری با رم 4 گیگابایتی و پردازنده 2 هسته ؛ با php و node.js هر کدوم چندتا کاربر میتونن همزمان در سایت کانکشن برقرار کنن و یا آنلاین باشن؟

    4- اگر از php استفاده کنم و در کنارش از وب سرور Nginx هم داشته باشم ؛ میشه جای node.js رو پر کنم؟

    5- نظر شما به طور کلی در این باره چیه؟

    با تشکر ار شما استاد.

    پاسخ
  • سلام.
    ممنون از خانم بهاره.
    علی آقا: مدل تعامل php با کلاینت‌هاش، مدل blocking i/o ه. به‌این معنی که (بنا به تئوری) هر کانکشن، تو یه Thread جدا با سرور ارتباط داره. Thread هم درگیری CPU داره و هم اشغال حافظه، به‌علاوه‌ی اینکه ذاتا محدودیت هم از حیث شمار Thread های قابل اجرا در یک سیستم‌عامل هم وجود داره. درست مثل این‌که انگار تنها مخاطب یه سرور php، همون یک کلاینت‌ه. خوب این اقتضا می‌کنه که سرور شما از منابع کافی سخت‌افزاری/نرم‌افزاری برخوردار باشه، اگه تراکنش‌های بالایی داریی.
    در نقطه‌ی مقابل، فریم‌ورک‌هایی مثل express، که روی NodeJS سوار میشن وجود دارند که روال Asynchronous I/O رو در قبال کلاینت‌ها دارند. به این معنی که الزامی در Run کردن Thread به‌ازای هر Connection ندارند. عمده‌ی کارایی این فریم‌ورک‌ها هم تو شرایطی‌یه که انبو‌هی از کلاینت‌ها بخواهند با سرور ارتباط بگیرند اما Requestهای مکرر با سرور نداشته باشند (مثل سرورهای بازی). اگه ترافیک بالا و request های نه‌چندان بالا (مثل همین سروری که می‌خوای پیاده سازی کنی) داری، پیشنهاد می‌کنم سراغ Async ها بری (مثل express).
    در ضمن به نظرم به‌جای اینکه آپارات بعدی باشی، سعی کن bestshow.co بعدی باشی! آپارات هم بهترین کد دنیا رو نداره.

    پاسخ
    • سمیرا سرباز
      10 آذر 1399 09:39

      سلام مرتضی جان
      یک دنیا ممنونیم از شما که وقت گذاشتین و به خوبی این موارد رو توضیح دادید.
      به وجود مخاطبانی مثل شما افتخار می‌کنیم.

      پاسخ

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

نشانی ایمیل شما منتشر نخواهد شد.

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست