ماژول ها در NodeJs

نویسنده پوریا ستایش پوریا ستایش
1399/04/27
0
112
زمان مطالعه 6 دقیقه
ماژول ها در NodeJs
با قسمت چهارم از سری مقالات آموزش Node.Js در خدمت شما هستیم. در این قسمت به مفهوم ماژول، ساخت سرور و ساخت و استفاده از ماژول‌های شخصی می‌پردازیم.

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

ماژول در Node.Js چیست؟

در یک جمله ماژول‌ها همان کتابخانه‌های جاوا اسکریپتی هستند. مجموعه‌ای از توابع که می‌توانید در پروژه‌هایتان استفاده کنید. همین و بس!

ماژول‌های داخلی در Node.Js

Node.Js به خودی ‌خود دارای یک سری ماژول داخلی است که شما می‌توانید بدون نصب هیچ‌گونه فایل اضافی از آن‌ها استفاده کنید. در اینجا لیستی از ماژول‌های Node.Js را مشاهده می‌کنید که با بیشتر آن‌ها در آینده آشنا خواهید شد.  به این موارد صرفاً نگاهی گذرا داشته باشید.  در آینده به‌صورت مفصل صحبت خواهیم کرد.

  • Buffer - برای کنترل داده های باینری
  • child_process - برای اجرای یک پردازش فرزند
  • cluster -برای تقسیم یک پردازش node به چندین پردازش
  • Crypto – برای کنترل توابع رمزنگاری OpenSSL
  • Dns – برای جستجوی dns
  • Events -  برای مدیریت رویدادها
  • Fs – برای کنترل فایل‌ها
  • http – برای اینکه عملی در سرور http رخ دهد
  • https –برای اینکه علمی در سرور https رخ دهد
  • path – برای مدیریت مسیر فایل‌ها
  • querystring – برای پردازش query در url
  • stream – برای کنترل داده‌های از نوع استریم
  • url – برای تجزیه‌ی یک url

نحوه‌ی افزودن ماژول در NodeJs

برای اینکه از یک ماژول در اسناد جاوا اسکریپتی استفاده کنید باید از تابع require به شکل زیر بهره ببرید.

var http = require('http');

برای استفاده از هر آنچه نیاز داشته باشیم، می‌توانیم از متغیری که تعریف کرده‌ایم استفاده کنیم. که در لحظاتی بعد یک سرور با همین http خواهیم ساخت.

HttpHeaders به چه معناست؟

قبل از اینکه به ساخت سرور بپردازیم باید بدانیم که هر صفحه یا هر فایلی در مرورگر دارای یک سری مشخصات است که اصطلاحاً به این مشخصات Headers گفته می‌شود.

اگر در مرورگر کروم دسکتاپ از سه نقطه‌ی بالای سمت چپ به قسمت More tools و Developer tools بروید (به‌جای طی کردن این مراحل می‌توانید از دکمه‌ی F12 یا از دسترسی سریع Ctl+Shift+I به‌صورت هم‌زمان استفاده کنید).

پنجره‌ای مثل تصویر زیر برایتان باز خواهد شد.

استفاده از developer tools برای nodejs

در این پنجره tab های مختلفی قرار دارد مثل elements، console، Network و... در اینجا ما فقط با تب Network کار داریم.

وارد تب Network شوید و سایتی را باز کنید. روی فایل صفحه‌ی اصلی سایت کلیک کنید؛ اطلاعاتی مثل تصویر زیر برای شما نمایش داده خواهد شد:

status code در سرور Node.js

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

در تصویر بالا Status Code را می‌بینید که ۲۰۰ است و با رنگ سبز نشان داده شده است که به مفهوم دریافت کامل صفحه است.

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

mime type در سرور Node.js

این عبارت مشخص کرده، فایلی که به مرورگر تحویل داده شده از چه جنسی است و در اینجا چون ما یک صفحه از سایت را باز کردیم، یک سند Html را مرورگر پردازش کرده است و عبارت text/html در مقابل عبارت content-type گویای این اتفاق است.

ساخت سرور در Node.Js

حال که با این مفاهیم آشنا شدید وقت آن رسیده است که یک سرور ساده بسازیم تا فقط Hello World نمایش دهد.

برای ساخت سرور در Node.Js از دستور CreateServer و از ماژول http استفاده می‌کنیم. دقت داشته باشد که به صورت پیش‌فرض تعیین شده است که یک تابع به صورت ورودی برای این دستور قرار داده شود که در پارامتر اول Request به سمت سرور و در پارامتر دوم Response سرور عنوان می‌شود.

برای ساخت سرور این دستورات را در فایل server.js ذخیره بفرمایید، دستور ساخت سرور به شکل زیر است:

var http = require("http");

http.createServer(function (req, res) {
	res.writeHead(200, { "content-type": "text/html" });
	res.end("Hello");
}).listen(8080);

حال باید متوجه شده باشید چرا مفاهیم Headers را عنوان کردیم، برای اینکه مرورگر بتواند دستورات ما را پردازش کند باید به او بگوییم چه فایلی ارسال می‌کنیم.  در اینجا عبارت text/html نشان‌دهنده‌ی ارسال فایل html به سمت مرورگر است و عدد ۲۰۰  موفقیت آمیز بودن این درخواست را نشان می‌دهد.

نکته‌ی دیگری که در اینجا مطرح است، حتما باید listen نوشته شود تا بدانیم در چه پورتی از سرور این فایل در حال اجرا است. به عنوان مثال برای دیدن این Hello World عزیز، باید به آدرس http://localhost:8080 برویم.

اما قبلش باید پروژه را اجرا کنیم. برای اجرا، cmd را باز کنید و دستور زیر را وارد نمایید:

node server.js

به مسیر فایل دقت کنید و توجه داشته باشید مسیر فایل و مسیر cmd باز شده یکسان باشد.  به عنوان مثال در اینجا فایل در لوکال دیسک C قرار گرفته و cmd نیز در همین مسیر است.

C:\> node server.js

بعد از اجرا می‌توانید وارد مرورگر شوید و لینک http://localhost:8080 را باز کنید که اگر همه چیز درست باشد Hello World را خواهید دید.

ساختن ماژول در Node.Js

شما می‌توانید ماژول های خودتان را داشته باشید و به راحتی آن‌ها را در پروژه‌های خود استفاده کنید. در مثال زیر ما یک ماژول ساخته ایم که شیء Date را بر می‌گرداند. از فواید استفاده از ماژول این است که می‌توانید در یک پروژه چند بار و یا در پروژه های متفاوت استفاده کنید.

exports.showDate = function(){
    return new Date();
}

دلیل استفاده از Exports در مثال بالا این است که بتوانیم از این ماژول خارج از این فایلی که هستیم استفاده کنیم.

اگر دقت کرده باشید ماژول بالا چیزی به غیر از یک تابع (function) نیست!

حال کاری که باید انجام دهید این است که کد بالا را در فایلی مثل date.js ذخیره کنید(برای راحتی استفاده از کنار server.js ذخیره کنید).

نحوه‌ی استفاده از ماژول در Node.Js

برای استفاده از ماژولی که ساخته ایم باید دستور require را به یاد بیاورید.

فایل server.js که قبلا ساختیم را باز کنید و عبارت زیر را بعد از متغیر http به شکل زیر بنویسید:

var http = require("http");
var dt = require("./date");

دلیل استفاده از "/." قبل از نوشتن date اشاره به فولدر جاری است؛ یعنی فایل server.js و date.js در یک فولدر قرار دارند.

نام تابعی که نوشتیم showDate بود و نام متغیری که برای این ماژول در نظر گرفتیم dt است.در قسمت ()res.end باید این showDate را از dt فراخوانی کنیم، به صورت زیر:

http.createServer(function (req, res) {
	res.writeHead(200, { "content-type": "text/html" });
	res.end("the current time is : " + dt.showDate());
}).listen(8080);

حال وقت اجرای فایل server خواهد بود. برای این کار از دستور زیر استفاده می‌کنیم:

node server.js

خروجی چیزی شبیه به عبارت زیر است:

the current time is : Fri Jul 17 2020 19:53:32 GMT+0430 (Iran Daylight Time)

در انتهای این مطلب شما باید با مفهوم ماژول، ساخت سرور ساده در Node.Js، ساخت ماژول‌های شخصی و استفاده از همین ماژول ها آشنا شده باشید.