آموزش Nodejs قسمت اول

آموزش Nodejs قسمت اول

NodeJS چیست؟

NodeJS یک یک زبان open source و Servre Base است که بصورت رایگان قابلیت اجرا روی انواع پلتفرم ها را دارد(مانند ویندوز، یونیکس، لینوکس، مکینتاش و ...) و از Javascript  برای اجرا روی سرور استفاده میکند.

چرا باید از NodeJS استفاده کنیم؟

قبل از هرچیز باید بدانید که NodeJS از برنامه نویسی ناهمگام استفاده میکند. اجازه بدین باید یک مثال این جمله را توضیح بدم. همونطور که میدونید یک وظیفه مشترک بین وب سرورها این است که بتوانند فایلی را باز کنند و محتوای فایل را به کلاینت ها ارسال نمایند. ببینیم ASP و PHP چطور چنین درخواستی را مدیریت میکنند و سپس آن را مقایسه میکنیم با نحوه کار در NodeJS.

در ASP و PHP اینکار در چهار مرحله انجام میشود:

  1. ارسال درخواست به "فایل سیستم" کامپیوتر
  2. منتظر ماندن تا "فایل سیستم"، فایل موردنظر را باز کند و محتوای آنرا بخواند
  3. محتوای خوانده شده را به سمت کلاینت ارسال میکند
  4. آماده برای دریافت درخواست بعدی میشود

اما NodeJS به نحوی دیگر عمل میکند

  1. ارسال درخواست به "فایل سیستم" کامپیوتر
  2. آماده برای دریافت درخواست بعدی
  3. هز زمان که "فایل سیستم"، فایل مورد نظر را باز کرد و محتوای آنرا خواند، محتوا را به سمت کلاینت ارسال میکند.

همانطور که متوجه شدید NodeJS منتظر موندن برای انجام کار فعلی را از برنامه ی خودش حذف کرده و بلافاصله آماده دریافت درخواست بعدی میشه. درحقیقت در پشت صحنه NodeJS  بصورت single-thread عمل میکند. که این موضوع در کنار برنامه نویسی ناهمگام آن، استفاده از حافظه را بسیار بهبود میبخشد.

NodeJS چه کارهایی را میتواند انجام دهد؟

Nodejs  میتواند محتوای صفحات را بصورت داینامیک ایجاد کند

Nodejs  میتواند فایل ها روی سرور باز کند، بخواند، بنویسد، حذف کند و ایجاد نماید

Nodejs  میتواند داده های دیتابیس را ویرایش، حذف و ایجاد نماید

 

قبل از هر چیز باید NodeJS را از مسیر https://nodejs.org دانلود و نصب نمایید.

با یک مثال ساده برای نمایش جلمه معروف hello world شروع میکنیم برای این منظور یک فایل به نام myfirst.js ایجاد کنید و محتوای زیر را در آن ذخیره نمایید

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end('Hello World!');
}).listen(8080);

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

برای اجرای فایل خود اگر از ابزار IDE خاصی استفاده نمیکنید میتوانید از Command Prompt ویندوز استفاده کنید. پنجره Run  (کلید ترکیبی ویندوز+R) را باز کنید و دستور CMD را تایپ کنید و اینتررا بزنید تا پنچره Command Prompt باز شود. با استفاده از دستور CD به مسیری بروید که فایل را در آن ذخیره کرده اید بروید و سپس دستور node myfirst.js را تایپ کنید و اینتر کنید.

C:\Users\Your Name>node myfirst.js

حالا کامپیوتر شما همانند یک سرور عمل میکند و هرزمان که کسی سعی کند به پورت 8080 دسترسی داشته باشد پیغام Hello World برگردانده میشود. برای اینکار میتواند مرورگر خود را باز کنید و آدرس http://localhost:8080 را تایپ کنید تا ببینید برنامه شما  بدرستی عمل میکند

ماژول ها در NodeJS

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

برای اضافه کردن یک ماژول در برنامه از دستور require() استفاده میکنیم که نام ماژول به عنوان ورودی این دستور استفاده میشود. به عنوان مثال اگر بخواهیم ماژول http را به برنامه اضافه کنیم تا بتوانیم از دستوراتش استفاده کنیم به این شکل عمل میکنیم

var http = require('http');

با دستور بالا ماژول http به برنامه اضافه شد که ما در اولین مثال خودمون نیز ازش استفاده کردیم

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end('Hello World!');
}).listen(8080);

 

ساختن یک ماژول نیز به سادگی افزودن و استفاده آن در برنامه است. بیایید اینکارو انجام بدیم. سعی میکنیم ماژولی بنویسیم که تاریخ و زمان جاری سرور را به عنوان خروجی برگرداند. یک فایل جدید ایجاد کنید و نام ان را myfirstmodule.js بزارید.

کدهای زیر را درون فایل بنویسید و فایل زا محدد ذخیره کنید

exports.myDateTime = function () {
  return Date();
};

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

خب اجازه بدین ماژولی که نوشتیم را در یک برنامه استفاده کنیم. برای اینکار یک فایل جدید به نام demo_module.js ایجاد کنید و آنرا ذخیره نمایید. محتوای این فایل کدهای زیر است

var http = require('http');
var dt = require('./myfirstmodule');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write("The date and time are currently: " + dt.myDateTime());
  res.end();
}).listen(
8080);

همونطور که میبینید در خط دوم با استفاده از دستور require ماژولی که نوشتیم را فراخوانی کردیم تا بتوانیم از متدهای آن در برنامه استفاده کنیم. توجه کنید که استفاده از  ./  در آدرس دهی ماژول به این معنی است که ماژول مورد نظر در همان مسیری است که فایل برنامه قرار دارد.

و نکته دوم این که زمانی که ماژول myfirstmodule را تعریف میکردیم اگر از کلمه کلیدی exports استفاده نمیکردیم دیگر ماژول در سایر فایل ها قابل دسترس نبود.

دستور node demo_module.js را در خط فرمان (command prompt) بنویسید تا برنامه اجرا شود. حالا اگر به آدرس http://localhost:8080 مراجعه کنید پیغامی یبینید که تاریخ و زمان جاری را نمایش میدهد که این تاریخ و زمان توسط ماژول myfirstmodule تولید میشود.

مرتضی جنگجو

برنامه نویس fullstack با بیش از 14 سال سابقه کار و همکاری در توسعه و پیاده سازی نرم افزارهای تحت وب با تکنولوژی Net. در شرکتهای بزرگ ایرانی، هلندی، فنلاندی و ترکیه

شبکه های اجتماعی نویسنده

دیدگاه کاربران