نود.جی.اس قهرمان – اولین سرور HTTP با Node.js

نود.جی.اس قهرمان – اولین سرور HTTP با Node.js

این چهارمین پست از سری آموزش Node Hero است – در این فصل ها یاد خواهید گرفت چطور از Node.js استفاده کنید و چطور با استفاده از آن محصولات نرم افزاری توسعه دهید.

در این فصل یاد خواهید گرفت چطور یک سرور HTTP ساده با Node.js راه اندازی کنید و به درخواست های (request) ارسال شده پاسخ دهیم.

 

فصل های گذشته و آینده:

  1. شروع کار بار Node.js
  2. استفاده از NPM
  3. درک مفهوم برنامه نویسی async 
  4. ساخت اولین سرور Node.js [در حال خواندن آن هستید]
  5. دسترسی به دادهای درون دیتابیس
  6. برقراری ارتباط با API
  7. سازماندهی ساختاری پروژه
  8. احراز هویت کاربران
  9. تست نرم افزار Node.js
  10. اشکال زدایی Node.js
  11. امنیت برنامه
  12. انتقال برنامه Node.js به Host اشتراکی
  13. نظارت بر روی برنامه Node.js

ماژول http برای سرور Node.js

وقتی تصمیم به ساخت برنامه های Node.js بر پایه HTTP می گیرید، http/https ماژول هایی هستند که با آنها در تعامل خواهید بود.

حال، اجازه دهید اولین سرور HTTP را با Node.js درست کنیم! ابتدا نیاز داریم ماژول http را به برنامه خود اضافه کنیم و اتصال سرور را بر روی پورت 3000 تنظیم کنیم.

با دستور زیر کد فوق را اجرا کنید:

نکاتی که باید به آن توجه شود:

  • requestHandler: این تابعی است که هر بار درخواستی به سرور ارسال می شود فراخوانی می شود. اگر به آدرس localhost:3000 در مرورگر مراجعه کنید، دو پیام در کنسول چاپ می شود:‌یکی برای / و دیگری برای favicon.ico
  • if (error): بررسی خطاها – اگر به هر دلیلی سرور نتواند اجرا شود به ما اطلاع داده می شود

ماژول http بسیار سطح پایین نوشته شده است – ایجاد برنامه های وب بزرگ با استفاده از تکه کد فوق بسیار وقت گیر است. به همین دلیل است که معمولا فریم ورکی برای کار با پروژه خود انتخاب می کنیم. شمار بسیاری فریم ورک وجود دارد، اما در زیر لیست محبوبترین آنها آمده است:

برای این فصل و فصل های آینده ما قصد داریم از Express استفاده کنیم، همچنین ماژول های بسیاری را برای Express در NPM می توان پیدا کرد.

Express

فریم ورکی سریع، پایدار، کم حچم برای Node.js است – http://expressjs.com

با دستور زیر Express را از طریق NPM به پروژه خود اضافه کنید:

وقتی Express نصب شد، اجازه دهید ببینیم چطور می توانیم برنامه ای مشابه برنامه قبل درست کنیم:

بزرگترین تفاوتی که باید به آن توجه داشته باشید این است که Express بطور پیشفرض به شما router می دهد. پس نیازی ندارید بطور دستی URL را بررسی کنید و آنگاه تصمیم بگیرید با آن چه کاری را انجام دهید، اما بجای آن در برنامه خود با app.getapp.postapp.put و غیره تعریف می کنید. اینها به عملیات HTTP ترجمه شده اند.

یکی از مفاهیم مهمی که Express پیدا سازی کرده است الگو middleware است.

Middleware

middleware ها را مثل لوله های Unix تصور کنید، اما برای درخواست های HTTP به کار می رود.

آموزش express.js

در این شکل می توانید ببینید که چگونه یک request به برنامه اکسپرس فرستاده می شود. ابتدا در سه middleware گردش می کند. هر کدام تغییراتی را انجام می دهند، آنگاه طبق منطق middleware سوم می تواند response ارسال کند یا یک route را باشد.

در عمل می توانید به صورت زیر انجام دهید:

نکاتی که باید به آن توجه شود:

  • app.use: این چیزی است که می توانید middleware خود را تعریف کنید – تابعی را با سه پارامتر قبول می کند، اولی درخواست (request) ، دومی پاسخ (response) و سومی کالبک next است. فراخوانی next سیگنالی به اکسپرس فرستاده می شود که می تواند به middleware بعدی یا مسیر بعدی منتقل شود.
  • middleware اولی تنها header ها را لاگ می کند و فورا بعدی را فراخوانی می کند.
  • middleware دومی یک مشخصه اضافی دارد – این مهمترین ویژگی الگو middleware است. middleware شما می تواند داده های بیشتری را به شی request بی افزاید که middleware پایینتر بتواند آن را بخواند یا تغییر دهد.

بررسی خطا

همانطور که در همه ی فریم ورک ها وجود دارد، بررسی خطا بسیار مهم است. در Express برای انجام این کار می بایست یک middleware مخصوص ایجاد کنید – middleware با چهار پارامتر:

نکاتی که باید به آن توجه شود:

  • تابعی که وظیفه بررسی خطاها را دارد باید به عنوان آخرین تابع در app.use تعریف شود.
  • تابع بررسی خطا دارای کالبک next است – از این برای تقسیم چند تابع بررسی خطا استفاده می شود.

نمایش HTML

تاکنون یاد گرفتیم که چطور یک پاسخ JSON ارسال کنیم – حال زمان آن فرا رسیده است که به راحتی یک فایل HTML را نمایش دهیم. برای این کار، قصد داریم از پکیج express-handlebars استفاده کنیم.

ابتدا بیایید ساختاری دایرکتوری برنامه را بصورت زیر تعریف کنیم:

وقتی این کار را انجام دادید، فایل index.js را با تکه کد زیر پر کنید:

کد فوق موتور handlebars را مقدار دهی اولیه می کند، و قالب ها (template) را در مسیر views/layouts تنظیم می کند. این دایرکتوری است که تمام template ها در آنجا ذخیره می شوند.

وقتی این کار را انجام دادید، می توانید html ساده ای را در main.hbs اضافه کنید – برای اینکه همه چیز ساده باشد، از html زیر استفاده کنید:

حتما توجه دارید که {{{body}}} محلی است که محتوا در آن جایگزین می شود – فایل home.hbs را ایجاد کنید:

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

متد render دو پارامتر را قبول می کند:

  • اولی، نام view
  • دومی، نام داده ای که می خواهید در view نمایش داده شود

به محض اینکه برنامه را اجرا کردید خروجی نهایی بصورت زیر خواهد بود:

این فقط زره ای از این کار بود، برای اینکه طرح ها و قالب های بیشتر را اضافه کنید، به مستندات express-handlebars مراجعه کنید.

 اشکال زدایی اکسپرس

در برخی از موارد، نیاز دارید ببینید که چه اتفاقی در هنگام اجرای برنامه شما رخ می دهد. برای این کار، می توانید متغیر زیر را به محیط express خود ارسال کنید: *DEBUG=express

شما می بایست سرور Node.js را بصورت زیر اجرا کنید:

خلاصه

این پست نشان می دهد که چطور سرور Node.js برای عملیات HTTP راه اندازی کنیم. پیشنهاد من این است که express را یاد بگیرید و آنگاه آزادانه چیزهای جدید را تجربه کنید. در بخش نظرات من را از پروسه یادگیری خود با خبر کنید.

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

در این مثال هر گونه سوالی که داشتید در زیر مطرح کنید!


  • سلام،
    آیا هاست‌اشتراکی‌ای وجود داره که بشه nodejs روش اجرا کرد؟

    • پاتریک درآواکیانس

      heroku

  • مرتضی

    این فقط ذره ای از این کار بود…

  • پوریا

    پاتریک جان دمت گرم .. این که es6 طوری نوشتی کد هات رو خیلی خوبه امیدوارم این آموزش‌های نود به این زودیا تموم نشه و بعد از معرفی middleware های کاربردی، deployment رو heroku و debug و monitoring رو هم بررسی کنی. معرکه‌اید واللا