[ad_1]
فرض کنید وارد یک فروشگاه شدهاید که صاحب آن هیچ حرفی نمیزند. در واقع نمیتواند چیزی بگوید تا شما از او سوال بپرسید! قبل از پیدایش 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 استفاده کنیم؟
برای پاسخ به این سوال، باید بدانید پلتفرم نود جِی اِس چه ویژگیهایی برایمان به ارمغان میآورد.
- مهمترین ویژگی سرعت بالا است. Node.js در مقایسه با PHP و Ruby به مقدار قابلتوجهی سریعتر است.
- ویژگی بعدی، امنیت بالا در برابر ترافیک ورودی غیرعادی است. مخصوصاً زمانی که سرور مورد هجوم حملات DDOS قرار گرفته و دیگر نرمافزارها مانند SSH همچنان مشغول فعالیت هستند.
- یکی دیگر از ویژگیهای مفید این پلتفرم، امکان دسترسیای است که به توسعهدهندههای سمت کلاینت (مرورگر) میدهد. این دسترسی به توسعهدهندگان کمک میکند تا هنگام نوشتن API (تعیینکننده ارتباطات بین قسمتهای مختلف اپلیکیشن) به تمام اطلاعات دسترسی داشته باشند.
پایین بودن زمان پاسخدهی در Node.js
بسیاری از وبسرورها بر اساس روش Threading کار میکنند؛ یعنی برای هر درخواست یا Request دریافتی، یک Thread ایجاد میکنند. با ایجاد Threadهای جدید، هربار بخشی از فضای رم، مثلا ۱ مگابایت از آن اشغال میشود. این پروسه تا جایی ادامه پیدا میکند که ظرفیت رم سرور تکمیل شود و توانایی پذیرش درخواستهای جدید را نداشته باشد. به همین خاطر استفاده از روش Thrading برای مصارفی که نیازمند تعداد زیادی از کانکشنهای همزمان هستند، گزینه مناسبی نیست!
Node.js این مشکل را حل میکند:
این پتلفرم ماهیتی Single-Threaded دارد که به آن Asynchronous هم میگویند. به زبان ساده یعنی نود جِی اِس برای هر درخواستی که از راه میرسد، پروسهای جدید آغاز نمیکند، بلکه پروسهای دائمی برای رسیدگی به تمام درخواستها همواره در جریان است.
پس میتوان گفت با استفاده از پلتفرم Node.js میتوانید کارها را بهصورت همزمان پیش ببرید؛ چراکه هیچکدام از پردازشهای مرتبط با I/O، در کارهای دیگر اختلال ایجاد نمیکند. کدهای جاوا اسکریپت در Thread اصلی و عملکردهای مرتبط با I/O در Threadهای دیگر اجرا میشوند.
موتور V8 نود جِی اِس و قابلیتهای مفیدی که دارد
موتور مجازی Google V8 که پذیرای پلتفرم Node.js است و کدهای جاوا اسکریپت را اجرا میکند، توانایی تبدیل کدهای قابلخواندن توسط انسان به کدهای قابلخواندن توسط ماشین را دارد. به این قابلیت کامپایل (Compile) میگویند. این قابلیت با تبدیل کدها، باعث افزایش سرعت چشمگیر نود جِی اِس میشود.
آخرین دلیلی که استفاده از Node.js را توجیه میکند، جامعه بزرگ توسعهدهندگانی است که از این پلتفرم استفاده میکنند. همچنین کتابخانههای Open Source زیادی بهعنوان مرجع این پلتفرم شناخته میشوند. این کتابخانهها باعث میشوند سرعت کارتان بالا برود؛ چراکه نیاز نیست برای هر مفهوم اولیهای اقدام به نوشتن کد کنید!
در نمودار زیر، بخشهای مهمی از Node.js را میبینید:
حالا وقت آن رسیده که مزایا و معایب این پلتفرم را بررسی کنیم:
خوبیها و بدیهای پلتفرم Node.js
نود جِی اس هم مانند تمام پلتفرمهای دیگر، مطلقاً خوب یا مطلقاً بد نیست. بلکه هم مزایا دارد و هم معایب. البته اگر بخواهیم منصفانه به این مسئله نگاه کنیم، باید بگوییم مزایای آن بیشتر از معایبش هستند.
مزایای Node.js
بسیاری از نکات مثبت این پلتفرم، در بخش قبلی که چرایی استفاده از نود جِی اِس را توضیح دادیم مشخص شد؛ اما اگر بخواهیم بهصورت موردی در مورد مزایای آن صحبت کنیم باید به موارد زیر اشاره کنیم:
- پاسخگوی تعداد زیادی کاربر و سرعت بالا
- پایین بودن زمان پاسخدهی در این پلتفرم
- خطایابی ساده و سریع
- جامعه کاربری بزرگ و وسیع
- متنباز بودن
- سازگاری با سیستمعاملهای مختلف اعم از مک، ویندوز و انواع توزیعهای لینوکس
- پشتیبانی از Caching
همانطور که گفتیم این پلتفرم بیعیب هم نیست!
معایب Node.js
معایب کم این پلتفرم، شاید در مقابل مزایای آن حتی به چشم هم نیایند؛ اما ما وظیفه خود میدانیم که شما را از آنها آگاه کنیم. دو مورد زیر از قابلتوجهترین عیبهای نود جِی اِس هستند.
- وابستگی شدید هر نود جِی اس به توسعهدهنده خودش!
- عدم پشتیبانی کامل توسط بیشتر هاستهای اشتراکی
نکته: تنها گزینه موجود برای اجرای کدهای جاوا اسکریپت در سمت سرور یا Backend، پلتفرم Node.Js است. اگر قصد استفاده از آن را دارید باید از هاستی استفاده کنید که مناسب این کار باشد. خواندن مقاله هاست Node.js برای انتخاب بهتر کمکتان میکند.
دیتابیسهای محبوب Node.js میان توسعهدهندگان
دیتابیس یا پایگاه داده محلی مجازی است که میتوانید دادهها و اطلاعاتتان را در آن ذخیره کنید. (میتوانید مقاله پایگاه داده چیست را مطالعه کنید) کدهایی جاوایی که توسط توسعهدهندگان در محیط Node.js نوشته میشوند هم نیازمند دیتابیس هستند.
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.۸.۰.tar.gz
cd node–v10.۸.۰
./configure
make ; make install |
سپس جهت اطمینان از درستی نصب، دستور زیر را وارد کنید:
درصورتی که نصب بدون مشکل انجام شده باشد، در نهایت شماره نسخه نصب شده را میبینید.
روش دوم – نصب Node.js و NPM در CentOS
جهت نصب، دستورات زیر را اجرا کنید:
yum install –y gcc–c++ make
curl—silent —location https://rpm.nodesource.com/setup_10.x|sudobash- |
توجه داشته باشید که باید بهجای عدد ۱۰ در دستور بالا، همیشه آخرین نسخه stable را جایگزین نمایید.
در مرحله بعد، دستور زیر را اجرا کنید:
پس از آن جهت اطمینان از درست نصب شدن نود جِی اِس، دستور زیر را بنویسید:
سپس برای اطمینان از نصب NPM از دستور زیر استفاده کنید:
چنانچه نصب بدون مشکل انجام شده باشد، درست مانند روش اول، در نهایت شماره نسخه نصب شده را مشاهده خواهید کرد.
سخن پایانی
Node.js پلتفرمی است که میتوان در آن برای سمت مقابل مرورگرها، یعنی سرورها، کدهای جاوا اسکریپت نوشت. تا پیش از عرضه این پلتفرم، امکان انجام این کار وجود نداشت. درضمن نود جِی اِس تنها راه برای نوشتن کدهای جاوا در سمت سرور یا Backend است.
مزایای فوقالعاده Node.js باعث شدهاند تا در میان توسعهدهندگان به محبوبیت بسیاری دست پیدا کند. یکی از مهمترین خصوصیات این پلتفرم سازگاری با انواع سیستم عاملهای ویندوز، مک و لینوکس است. توصیه میکنیم که مقاله داکر چیست را در وبلاگمان بخوانید. این مطلب دانش شما را در رابطه با برنامهنویسی افزایش میدهد. همچنین اگر میخواهید مطالب آموزشی بیشتری در مورد برنامهنویسی و کدهای جاوا بخوانید، پیشنهاد ما سایت سون لرن است.
سرورهای مجازی و سرورهای اختصاصی ایران سرور، کاملاً با نود جِی اِس سازگار هستند. میتوانید با کلیک روی هرکدام، نسبت به خرید آنها اقدام کنید.
[ad_2]