برنامه نویسی و IT

فریم ورک NodeJs را بهتر بشناسید

همه چیز درباره ی فریم ورک NodeJs

برنامه نویسی بهترین شغل دنیاست (طبق آمار حال حاظر دنیا) و اگر شما اکنون از این موضوع باخبر شدید، مطمئنا تعجب نکرده اید چرا که مگر می شود که کسانی که این قدر دنیای ما را تغییر داده اند، در ابتدای لیست دیگر مشاغل نباشند. در ادامه در مورد فریم ورک NodeJs بیشتر صحبت می کنیم.

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

در این مقاله می خواهیم که از یکی از پلتفرم های برنامه نویسی به نام فریم ورک NodeJs را معرفی کنیم و اینکه NodeJs چیست و چه کاربرد های دارد.

معرفی فریم ورک NodeJs

نود جی اس(NodeJs) یک محیط سمت سرور رایگان برای زبان برنامه نویسی جاوا اسکریپت است (در واقع برای اجرا از موتور جاوا اسکریپت گوگل کروم استفاده می کند موتور V8 Engine).

 

معرفی فریم ورک NodeJs

 

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

اول اینکه منظور از محیط سمت سرور این است که در علم کامپیوتر ما زبان های برنامه نویسی سمت کاربر و سمت سرور را داریم. زبان های سمت کاربر به زبان هایی گفته می شود که کاربر با آنها تعامل دارد.

کاربر کد های ما را مستقیم می بیند نتیجه ی کدها ما را می بیند اگر کدها ما منجر به تولید یک دکمه یا متن می شود کاربر آنها را می بیند و می تواند نتیجه ی کار با یک دکمه را مستقیم ببیند(معمولا زبان سمت کاربر یادگیری آسان تری دارند).

 

بازیابی اطلاعات

اما زبان های سمت سرور این زبان ها کاربر نمی تواند بصورت مستقیم و فوری نتیجه کار را ببیند به عبارتی ساده تر شما نمی توانید این عملیات را ببینید که وقتی اطلاعاتی را در یک سایت ذخیره می کنید این اطلاعات به کجا می رود، چه عملیاتی روی اطلاعات انجام می شود یا اطلاعات چگونه دوباره بازیابی می شود.

هدف از تعریف این عبارات این است که در بیشتر وبسایت های ایرانی این مفاهیم تخصصی بیان می شود و گاه شما نمی توانید با تعریف درست عبارات تخصصی آشنا شوید عبارت دوم جاوا اسکریپت است.

جاوا اسکریپت یک زبان سمت کاربر جهت طراحی وب است البته امروزه با جاوا اسکریپت هر نوع کاری انجام می دهند و شاید این مهم ترین علتی است که جاوا اسکریپت محبوب ترین زبان برنامه نویس جهان است.

 

بازیابی اطلاعات

طراحی وب سایت با فریم ورک NodeJs

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

نود جی اس در سال 2009 توسط رایان دل اختراع شد یک محیط اجرا است شامل هر چیزی که شما برای اجرای یک برنامه نوشته شده در جاوا اسکریپت نیاز دارید.

نود جی اس بر روی تمام سیستم عامل ها اعم از لینوکس، مک و ویندوز قابل اجرا است نود جی اس تحت نظارت بنیاد نود.جی اس قرار دارد و شرکت های مشهوری همچون مایکروسافت، آی بی ام، نتفلیکس و … از آن استفاده می کنند. با این حال باید بدانیم که جاوا یا پایتون ؟ کدام بهتر است؟

یک نمونه کد که در وبسایت نود جی اس برای آشنایی با ساختار کد نود جی اس آورده شده است:

const http = require('http');




const hostname = '127.0.0.1';

const port = 3000;




const server = http.createServer((req, res) => {

  res.statusCode = 200;

  res.setHeader('Content-Type', 'text/plain');

  res.end('Hello World\n');

});




server.listen(port, hostname, () => {

  console.log(`Server running at http://${hostname}:${port}/`);

});

 

در این نمونه کد مثال مشهور نمایش Hello world آورده شده است و کار با شبکه را در مثال بالا می توانید ببینید.

 

وبسایت freecodecamp

 

این تصویر در وبسایت freecodecamp قرار داده شده است و نشان می دهد که اگر زبان جاوا را می دانید جاوا و نود جی اس در ساختار شباهت های زیادی با هم دارند

کاربرد های فریم ورک NodeJs

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

یکی از کاربرد ها نود جی اس در کار با I/O است I/O به معنای ورودی و خروجی است که می تواند هر چیزی باشد اعم از خواندن و نوشتن فایل های محلی برای ساختن یک درخواست Http به یک API، I / O زمان می برد و از این رو توابع دیگر را مسدود می کند اما در NodeJs می توان دیگر توابع را مسدود نکرد. مسدود شدن توابع باعث می شود که شما زمان زیادی را برای اجرای هر کدام از کار هایی که می خواهید منتظر باشید.

وقتی که می گوییم یک عملیات ورودی و خروجی مسدود شده، یعنی تا زمانی که پردازنده عملیات اول را انجام ندهد به سراغ عملیات دوم نمی رود و عملیات ورودی و خروجی مسدود نشده، یعنی تخصیص قدرت پردازنده همزمان به چند عمل، مسئله ای را در نظر بگیرید که بخواهیم اطلاعات کاربرهای user1 و user2 را از یک پایگاه داده درخواست کنیم و سپس آنها را روی صفحه به نمایش درآوریم.

کاربرد های فریم ورک NodeJs

پردازش های NodeJs

پاسخ به این درخواست زمان می برد. اما هر دو درخواست داده کاربر می توانند بطور مستقل و همزمان انجام شوند(به عکس زیر دقت کنید این عکس نحوه ی اجرای مثال را بصورت تصویری آورده است همانطور که می بینید در سمت راست عکس یک قابلیت بسیار مهم NodeJs آورده شده است به نام برنامه نویسی همزمانی یعنی پردازنده بصورت ترتیبی اعمال را انجام نمی دهد در واقع چند عمل می توانند با هم در حال پردازش باشند و سرعت کار بالا برود).

از مهمترین کاربردهای NodeJs این بود که برنامه نویسی همزمانی و کار با ورودی و خروجی را به جاوا اسکریپت آورد.

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

یک از دلایلی که باعث شد سازنده ی NodeJs به فکر ساخت آن باشید همین برنامه نویسی ترتیبی و اتلاف وقت بود دیگر کاربر بسیار مهم NodeJs در نرم افزار های RealTime است که بازدهی بالایی در NodeJs دارد.

پردازش های NodeJs

نرم افزار های RealTime

نرم افزار های RealTime به نرم افزار هایی گفته می شود که در آنها زمان بسیار مهم است یعنی کاربر باید به صورت فوری نتیجه ی درخواست خود را بگیرد یا به سرعت اطلاعات در آنها ذخیره شود.

بدون ذره ی اتلاف وقت (به لطف قابلیت برنامه نویسی همزمانی می توان نرم افزار های RealTime نوشت) معمولا این نوع نرم افزار ها شامل سیستم هایی مثل رزرو بلیط قطار یا هواپیما یا اتاق های چت است.

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

در حقیقت باید گفت که وقفه ای در تجربه ی کاربری کاربر بوجود نمی آید صفحه هیچوقت توسط اجزای موجود در صفحه مجددا بارگذاری نمی شود(اینکار باعث بالا رفتن سرعت وبسایت می شود البته معایب زیادی نیز دارد از جمله کندی اجرای اولیه یا مشکلات سئو).

نرم افزار های RealTime

مزایا و معایب فریم ورک NodeJs

  1. قابلیت برنامه نویسی ناهمگام
  2. متن باز بودن(یعنی شما می توانید به عنوان یک برنامه نویس آن را تغییر دهید و نسخه ی بهتری را عرضه کنید)
  3. دارا بودن کتابخانه های بی شمار

پشتیبانی شرکت های قدرتمند (توسعه NodeJs توسط شرکت Joyent پشتیبانی می شد در سال 2015، بنیاد Node.js به منظور “فعال کردن گسترده و کمک به تسریع در توسعه Node.js” ایجاد شد IBM ، Microsoft ، PayPal ، Fidelity و SAP اعضای بنیانگذار این سازمان شدند لیست سازمان هایی که از Node.js در تولید استفاده می کنند، دائما در حال افزایش است.

این شرکت در حال حاضر تقریباً سیصد شرکت شناخته شده مانند PayPal ، Medium ، Trello ، Uber و Zendesk را شامل می شود تعداد بسیار کمی از پروژه های منبع باز تاکنون از چنین پشتیبانی شدید شرکت های پیشرو در جهان برخوردار بوده اند).

سرعت بالا؛ نود جی اس سریع است و یکی از دلایل سرعت بالای آن موتور Google’s V8 است موتوری که نود جی اس بر روی آن اجرا می شود و در واقع طراحی شده برای مرورگر گوگل کروم این موتور با زبان C++ نوشته شده است و برای ترجمه کدهای جاوا اسکریپت به زبان قابل فهم برای ماشین استفاده می شود و این کار را با یک سرعت چشمگیر انجام می دهد کافی است که در اینترنت سرعت موتور V8 را جستجو کنید.

گوگل سرمایه گذاری زیادی روی این موتور کرده است و به لطف آن این موتور هر روز پیشرفت بهتری را تجربه می کند و این به نفع NodeJs است.

مزایا و معایب فریم ورک NodeJs

قابلیت اجرا روی تمام سیستم عامل های کامپیوتری

ابزار های رایگان زیاد(مانند Mocha.js, Chai, Sinon.JS, Express.js و …)

یادگیری آسان برای کسانی که جاوا اسکریپت را می دانند لازم به ذکر است که اگر زبان محبوب جاوا اسکریپت را می دانید کدهای سمت کاربر و سمت سرور در NodeJs مثل هم هستند و دردسر های طراحی سایت شما تا حدودی کاسته می شود کسانی که با زبان هایی نظیر C# تحت Asp.net کار کرده اند می دانند که برنامه نویسی سمت سرور چه دردسرهایی دارد مخصوصا که در اینجا شما حتما باید زبانی مثل جاوا اسکریپت را نیز بدانید.

  • اشتراک گذاری آسان درون یک تیم(افراد تیم می توانند کدهای همدیگر را بفهمند)
  • قابلیت اشتراک گذاری کد و استفاده مجدد از آن به دلیل خوانایی بالای کد

معایب:

نارسی ابزار ها: اگرچه ماژول های اصلی Node.js کاملاً پایدار هستند و می توانند بالغ تلقی شوند، اما ابزارهای بسیاری در رجیستری npm (یک نرم افزار است که شما را قادر می سازد پکیج های نرم افزاری جاوا اسکریپت را به پروژه خود اضافه کنید.

بزرگترین منبع پکیج ها و پروژه های رایگان نیز می باشد) وجود دارد که از کیفیت پایین برخوردار بوده یا به طور صحیح مستند و آزمایش نشده است(در حال حاظر ضعیف هستند) علاوه بر این خود رجیستری به اندازه کافی ساختار یافته نیست که بتواند ابزارهایی را بر اساس رتبه آنها یا کیفیتشان ارائه دهد از این رو شاید یافتن بهترین راه حل برای اهداف خود دشوار باشد بدون اینکه بدانید باید چه چیزی را جستجو کنید.

در زبان های برنامه نویسی نظیر C, C++, C#, Golang راه حل های بهینه ی زیادی برای انجام وظایف سنگین بر روی پردازنده وجود دارد اما در نود جی اس هنوز چنین قابلیتی وجود ندارد.

فریم ورک NodeJs را بهتر بشناسید

نبود کتابخانه هایی که بتوان به آنها کامل اطمینان کرد برخلاف زبان های برنامه نویسی مشهور چون جاوا شما حتما در بحث انتخاب کتابخانه ای مطمئن، استاندارد و کارا به مشکل می خورید.

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

سعید هابطی

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

نوشته های مشابه

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

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

همچنین ببینید
بستن
دکمه بازگشت به بالا