Open Nav

معرفی Node.js و آموزش آن

2687
نویسنده : مدیر سایت
منبع : سایت زیوس
4 1397 بهمن

zeusir.com - Node.js

نود جی اس یا Node.js چیست؟

 

Nodejs یک platform چند سکوویی(cross platform)و متن باز (opensource)برای زبان javascript است که به ما اجازه می‌دهد تا با زدن کد های javascript نرم‌افزار های Backend و یا حتی اپلیکیشن های دسکتاپ را تولید کنیم.

 

در این مقاله تلاش بر این است که شما را با:

 

تاریخچه

دلایل ظهور Node

نصب Node در ویندوز

نصب Node در لینوکس

معرفی برنامه به متغیر محیطی PATH در لینوکس

کار در خط فرمان لینوکس

نوشتن برنامه

فرایند های I/O

کار با Timer ها

آشنا کنیم.

 

این platform در سال 2009 ساخته شد.قدرت فوق‌العاده Nodejs به دلیل تغذیه آن از موتور V8 شرکت Google است که با زبان ++C نوشته شده است, پس performance آن بالا است.

 

در گذشته کد های جاوا اسکریپت فقط در زمینه frontend استفاده می‌شدند اما Node که اصلی ترین رکن شعار ” جاوا اسکریپت در همه جا ” است، با ورود خود به دنیای برنامه نویسی باعث استفاده از جاوااسکریپت در ساخت وب اپلیکیشن ها هم در زمینه frontend و هم در backend شد.حتی فریم ورک های ساخت اپلیکیشن های دسکتاپ همچون electron نیز از Node قدرت میگیرند (نرم افزار atom با electron نوشته شده است.)

از دیگر فریم ورک های مطرح که از Node قدرت یگیرند میتوان به:

 

Gulp.js

Grunt.js

Electron.js

Express.js

Koa2

Sails.js

Nest.js

Meteor.js

Derbi.js

Hapi.js

 

و… اشاره کرد.

 

درسال 2009 رایان دال : rayan dahl شروع به انتقاد از بزرگترین و محبوب‌ترین وب سرور جهان، apache کرد، زیرا پاسخ دهی آن در زمان زیاد شدن کانکشن ها(10000 به بالا) ضعیف بود.پس در ابتدا خود شروع به ساخت و توسعه Node کرد ولی بعدها شرکت جوینت از وی حمایت کرد.

دانلود و نصب Node بر روی ویندوز:

1-برای دانلود Node یاید طبق تصویر زیر به سایت Nodejs.org مراجعه کرد.

zeusir.con - win1 

2-به تب Downloadsرفته و باتوجه به نوع سیستم عامل و نیاز خود و معماری پردازندتان یک مدل را انتخاب کنید، اگر رم شما 4GB به بالا باشد باید نسخه 64bit را دانلود کنید.

 downloads

3-بعد با راست کلیک کردن و انتخاب گزینه install اقدام به نصب فرمایید.

install 

4-در ادامه طبق 4 تصویر زیر اقدام به نصب فرمایید.

install step2 

install step3install step4install step5

بعد از اتمام این مرحله بر روی کزینه Finish کلیک کنید.

نصب در لینوکس

1- بعد از دانلود فایل که احتمالاً دارای پسوند tar.xz است، اقدام به extract کردن آن در فولدرمورد نظر خود کنید.

 linux install 1

2-تمام فایل‌های مربوط به Node در فولدری به همین نام قرار دارد که فایل اجرایی ما در زیر شاخه زیر قرار دارد:

node→bin

قرار دارد.

 

3-برای معرفی این فایل یه سیستم عامل، باید به متغیر محیطی PATH معرفی شود، برای اینکار شما باید دستور زیر را در آخر فایل bashrc که در حالت عادی hidden است و در پوشه homeقرار دارد کپی کنید.

linux install 2

در اینجا پوشه homeو main-account مربوط به کاربر( نویسنده ) میباشد و با پوشه مورد نظر شما متفاوت است پس شما میتوانید از هر پوشه دیگری استفاده کنید و جای نگرانی نیست.

شروع برنامه نویسی:

در ابتدا لازم است متذکر شویم که برای شروع برنامه نویسی Node باید با javascript آشنایی داشته باشید، مطالب مورد نیاز جاوا اسکریپت که قطعاً با آن‌ها برخورد میکنیم عبارت اند از:

 

تعریف متغیر

حلقه و شرط

انواع دادها اعم از Object ها

توابع(Functions , Arrow Functions , lambda)

Ecma Script (اگر مایل به کسب اطلاعات در باره این تکنولوژی هستید میتوانید با مراجعه به این لینک، مقاله مارا در سایت زئوس بخوانید)

پس اگر با موارد فوق آشنایی دارید جایی برای نگرانی وجود ندارد.

 

برنامه معروف Hello world :

اگر قبلاً تجربه کار با جاوااسکریپت را داشته باشید حتماُ میدانید که برای نمایش این برنامه در مرورگر از ()console.log استفاده میشد، اما در اینجا علاوه بر این روش از روش دیگری نیز استفاده می‌شود که به مراتب پرکاربرد تراست، به تصویر زیر توجه کنید:

node1 

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

 

Atom

Sublime

Netbeans

Eclipse

Brackets

Blufish

++ Notepad

Koding

 

و...استفاده کنید که البته همه موارد فوق رایگان، متن باز و چند سکویی هستند.

شرح برنامه :

در خط اول متغیری را تعریف کردیم که در خط ۲ و ۳ از آن استفاده میکنیم،

برای اجرای برنامه توسط‌ Node باید از دستور node استفاده کنیم که همان فایل اجرایی است که به سیستم عامل معرفی شده است، همانگونه که میبینید هر دو دستور خط ۲ و ۳ به یک شکل خروجی را تحویل میدهند اما در Node بیشتر از روش خط سوم استفاده میشود.

نوشتن برنامه و آشنایی با Global object :

در زبان انگلیسی، Global به معنی عمومی یا جهانی است، Object ها در جاوا اسکریت Global هستند،این بدین معنی است که از هرکجا میتوان آن هارا صدا زد.

بیاید با استفاده از آبجکت های عمومی نام و آدرس فایل هایمان را ببینیم، به تصویر زیر دقت کنید:

node2

در اینجا dirnameــ و filenameــ دو آبجکت گلوبال هستند که به ترتیب مسئول نمایش آدرس کامل و نام کامل فایل هستند.

حال، اگر به نام کامل فایل نیازی نبود برای کار با آدرس خود فایل میتوان از path و متد basename استفاده کرد:

node3

گرفتن داده از کاربر:

برای گرفتن داده از کاربر از process.stdin.on  استفاده میشود، البته اگر این روند خاتمه پیدا نکند، تا ابد ادامه خواهد داشت پس برای توقف آن به صورت پستی از کلید ترکیبی ctrl + c در لینوکس استفاده میشود :

node4

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

متوقف کردن عملیات و برنامه:

برای متوقف کردن یک برنامه یا پروسه از process.exit استفاده میشود، پس تصویر قبل به صورت زیر در می آید:

 node5

آشنایی با Argument variables :

یکی دیگر از شگفتی های Global object ، آبجکت process است که قبلاً با آن آشنا شده ایم.در قسمتی از این آبجکت،آرایه ای وجود دارد که در زمان شروغ برنامه اطلاعات مربوط به برنامه در آن لیست می‌شود که به آن متغیر های استدلال یا Argumen variables میگویند.

نحوه کار با این عضو به شکلی است که در تصویر زیر ملاحظه میکنید:

node5

در خط اول با دستور push رشته ی zeusir.com را درون Argument variable میریزیم و در خط بعد آرایه را به نمایش میگذاریم.اگر دقت کنید، مشاهده خواهید کرد که قبل از رشته ای که اضافه کردیم دو مقدار دیگر نیز موجود هستند که محل ذخیره و نام فایل اجرایی برنامه اند.

چالش برنامه نویسی:

در اینجا قرار براین هست که از چیز هایی که در چند مرحله پیش یا گرفتیم، درکنار هم استفاده کنیم بطوری که کاربرد این برنامه‌های کوچک رو که در آینده پیچیده‌تر می‌شوند، کامل‌ درک کنیم لطفاً به تصویر زیر توجه کنید :

node6

شرح برنامه:

در این برنامه با پیاده‌سازی و فراخوانی تابع push_grab مقداری را دریافت کرده و به آرایه process.argv به اصطلاح Concatenate (الحاق) میکنیم.

تابع indexOf که مسئول پیدا کردن تطابق آرگومان خود با رشته ایست که مورد بررسی قرار می دهد، مقدار برگشتی خود را در متغیر های G و U قرار میدهد.(مقدار برگشتی این تابع به ازای پیدا نکردن تطابق معادل منفی یک و در صورت مشاهده تطابق برابر با تعداد آیتم های قبل عنصر مورد نظر است.)

بعد از این مرحله با یک آزمون و خطا(شرط if _ else ) اطمینان حاصل میکنیم که هردو متغیر ما دارای مقادیری هستند که با برقراری شرط، آیتم های argument variable به نمایش در می آید.

کار با Timer و متد های آن:

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

از لحاظ سخت افزاری، تایمر یک مدار دیجیتالی در داخل CPU شماست که از FlipFlop تشکیل شده است،در پردازنده ها تعدادی تایمر و شمارنده(Timer/Counter) وجود دارد که تعداد آن‌ها بستگی به شرکت سازنده آن‌ها دارد. زمانی که شما در برنامه نویسی از تایمر استفاده میکنید، سیستم عامل مدار تایمر CPU شما را برای عملیات مورد نظر آماده میکند.

در جاوااسکریپت برای اینکه تایمر به صورت پشت سر هم کاری را انجام دهد از تابع setInterval استفاده میشود، این تابع دو پارامتر دارد که پارامتر اول آن کار هایی است که میخواهیم پشت سرهم انجام شود و پارامتر دوم مشخص کننده زمان تکرار(میلی ثانیه) است به مثال زیر توجه کنید:

node760%

در این برنامه با متغیر a زمان تکرار را ۴۰۰ میلی ثانیه تعریف کردیم و با متغیر b مجموع زمان سپری شده را به خروجی می بریم.

مثال بعد: در اینجا سعی میکنیم با استفاده از تابع setTimeout بعد از زمانی خاص و فقط یکبار کاری را انجام دهیم، مثلاً بعد از اتمام زمان بگوییم ”Finish”.

node8

در برنامه فوق پس از ۳ ثانیه، مقدار زمانی که برنامه منتظر پایان یافتن بوده است در خط فرمان نشان داده میشود.( متغیر a تعیین کننده است) ؛اما ممکن است ما بخواهیم با شرط و شروط خاصی به برنامه خاتمه دهیم، در این حالت از تابع clearInterval استفاده میکنیم.به مثال زیر توجه کنید:

node9

در اینجا در هر ۱۰۰۰ میلی ثانیه(۱ ثانیه) یک واحد یه متغیر num اضافه می‌شود و وقتی مقدار به ۱۰ رسید برنامه متوقف شده و پیغام finish را نشان می دهد.

منبع این مقاله وب سایت کلیک سایت و شخص امیر حسن عظیمی میباشد. برای اطلاع بیشتر میتوانید با وبسایت ایشان در ارتباط باشید.


  نظرات