نُد به طعم کاربرد! Hello World!

اول به نام خدا و سلام

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

قبل از هر چیز بگم که نود غلطه! شما تو گوگل سرچ کنید نود ببینید چه مضخرفاتی میاد :)) آخه ند اندازه برنامه نَوَد هم ارزش نداره که تو صفحه اول بیاد؟ شاید بگید باید سرچ کرد نود جی اس، کمی تا قسمتی موافقم اما بازم درست نیست، ند در دنیا انقدر معروف و محبوب هست که بدون جی اس هم گوگل بگه بفرمایید این هم نتایج مربوط به node.js. در ایران هم باید همین باشه! یه فریمورک به این عظمت وقتی اسمش سرچ میشه درسته که عکس برنامه نود بیاد؟ اصلا ند زیر سوال میره. پس برای راحتی جستجو هم که شده از این به بعد بگیم نُد جی اس (با نقطه یا بدون اون)؛ در ثانی، اصلا چرا باید چیزی که _ُ خونده میشه رو با "و" بنویسیم (همون که زمان مدرسه میگفتیم _ُ استثناء). خب مثل بچه آدم با _ُ بخونید بره دیگه :)).

مسئله دیگه اینه که این مجموعه آموزش نُد به طعم کاربرد سریالی نیست! پس قسمت بندی نداره! طبق موضوع انتخاب کنید و آموزش ها رو پیگیری کنید.

از اینکه در قسمت نظرات به توسعه آموزش ها کمک میکنید، ممنونم.

خب، بریم سراغ اصل مطلب!


برای نوشتن اولین برنامه در هر زبان برنامه نویسی با برنامه سلام دنیا شروع میکنیم، به اینصورت که سعی میکنیم با زبان برنامه نویسی مورد نظرمون، برنامه ای بنویسیم که عبارت "Hello World!" یا "سلام دنیا!" رو چاپ کنه.

نکته: اینکه ماهیت ند چیه و چجوری به وجود اومده سایت های زیادی هست که کمک کننده هستن و همون ها کافین و نیاز به زیاده گویی و تکرار مکررات نیست! (مثلا مراجعه به ویکیپدیا).

اما ما اینجا زبان برنامه نویسی نداریم، بلکه یه فریم‌ورک داریم (فریم‌ورک یا framework) بنابراین نوع برنامه سلام دنیا مون هم یه ذره تغییر میکنه.

اگه بخوایم حالت جاوااسکریپتی این برنامه رو بنویسیم، کلا یه خط داریم:

console.log("Hello World!");
console.log('Hello World!');
console.log(`Hello World!`);
console.log("Hello World!");

عه! این که چهار خط شد! :)) در حقیقت این چهار خط همه یه معنایی میدن و کلا یه کاری میکنن! یه نگاه دقیق باعث میشه تفاوت هاشون رو متوجه بشید!

در مورد تفاوت ' و " و ` صحبتی نمیکنم چون مورد به جاوااسکریپته بیشتر و نه ند؛ همچنین است تفاوت گذاشتن ; یا نگذاشتنش!

برای اجرای این برنامه اول ند رو نصب کنید. (مثل من لینوکس بازید؟ پس ند رو نصب کنید!) حالا هر جایی از کامپیوترتون که دوست دارید، یه فایل بسازید که هر اسمی دلتون میخواد روش میزارید و در انتها پسوند .js رو هم اضافه میکنیم! مثلا من اسم این فایل رو میزارم app.js. حالا داخل این فایل قطعه کد بالا رو تایپ (و نه کپی) کنید! در نهایت برید داخل cmd یا کنسول و دستور زیر رو تایپ کنید.

node <address/of/node/file/app.js>

یعنی اولش یه node بزارید و بعد آدرس جایی که اون فایل هست رو وارد کنید. این آدرس از جایی شروع میشه که شما اونجا هستید. مثلا (در cmd) من در C: هستم و فایل من در c:\exampleFolder\app.js پس دستور میدهم:

node C:\exampleFolder\app.js

خب حالا میبینید چهار بار عبارت Hello World! چاپ شده! در آموزش های بعدی در مورد ریز جزئیات قطعه کد بالا خواهیم آموخت.

حالا اگه بخوایم حالت ند جی اسی رو برای نوشتن برنامه سلام دنیا انتخاب کنیم باید یه سرور بسازیم، بعد به سرور بگیم که اگر درخواستی از کلاینت اومد، اون رو مدیریت کنه و در نهایت پاسخی به کلاینت بده با این عبارت: "Hello World!"

برای اینکار قطعه کد زیر رو داریم:

require('http').createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World!\n');
}).listen(4000, () => {
console.log(`Server running at port: 4000`);
});

خب حالا این چیه؟ برای اجرا مثل کد اولی عمل میکنیم. با این تفاوت که برای دیدن نتیجه (بعد از اجرای برنامه در کنسول یا کامندلاین) مرورگرتون رو بازکنید و آدرس 127.0.0.1:4000 رو بزنید. اون موقع میبینید که یه Hello World! خوشگل میاد روی صفحه مرورگر!

ما به این سادگی سرور نوشتیم. خب حالا این کد چه کار میکنه؟ خط اول میگه از کلاس داخل کتابخونه http یه سرور بساز (ساده تر: بر اساس پروتکل http یه سرور بساز.) برای این سرور دو تا آرگومان برای کال‌بک تعریف میکنیم و من مثل بقیه اسم های کلیشه ای req یعنی request و res یعنی response رو گذاشتم. خط دوم میگه برای پاسخی که به کلاینت قراره داده بشه عدد حالت 200 رو قرار بده (اعداد حالت یا همون status codes میگن پاسخی که از سرور گرفته شده محتوی چه نوع پیامیه! و 200 یعنی پاسخ یافت شده و همه چیز اوکی عه!) خط سوم هم نوع هدر پاسخ رو تعیین میکنه (برای پردازش پاسخ) و در نهایت خط چهارم به کلاینت پاسخ مورد نظر رو میفرسته. در ادامه ساخت سرور، خط پنجم که سرور ساخته شده، به سرور میگیم که شروع کنه پورت 4000 از آدرسی که هستیم رو (اینجا میشه همون لوکال هاست یا 127.0.0.1) شنود کنه و منتظر درخواست کلاینت باشه. اگر سرور شنود کردن رو شروع کرد و مشکلی نبود هم پیام Server running at port: 4000 در کنسول چاپ میشه!

خب تا اینجای کار به دو روش برنامه سلام دنیامون رو ساختیم: یکی با حالت جاوااسکریپتی که صرفا روی کنسول میگفتیم سلام دنیا! دومی هم حالت ند جی اسی بود که روی کلاینت میگفتیم سلام دنیا!

این آموزش یه ذره زیادی کلی گویی شد و از جزئیات باز موندیم، اما بهتر از این نمیشد. در آموزش های بعدی قضیه فرق میکنه :))

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

https://medium.com/@adnanrahic/hello-world-app-with-node-js-and-express-c1eb7cfa8a30

در انتها بگم که من خودم در مورد ند نوبم پس توقع یه آموزش خفن نداشته باشید. صرفا دلم میخواد اون چیز هایی که یاد میگیرم رو با بقیه هم به اشتراک بگذارم و گاها اگه چیزی رو اشتباه یاد گرفتم کسی پیدا بشه و بهم درستشو بگه :)). مشابه همین نوشته ها برای لینوکس هم میزارم. بازم تاکید میکنم که این نوشته ها صرفا نوشتن چیزاییه که تا الان یاد گرفتم.