30 روز با Node - روز اول: شروع کنیم

23 مرداد 1397
nodejs_dark_by_wfuller-db4e1ip

مقدمه

Node.js یک پلتفرم سمت سرور و متن باز است که براساس موتور جاوا اسکریپت نسخه 8 گوگل کروم بنا شده است. چند منظوره عمل می کند و قادر است اپلیکیشن های وب بلادرنگ تولید کند و برای کارآیی و سبکی بیشتر، از عملیات ورودی خروجی رویداد محور و مسدود نشدنی استفاده می کند. نود جی اس (Nodejs) در سال 2009 توسط رایان دال و تیم توسعه  Joyent به زیان C، C++ و جاوا اسکریپت نوشته و طراحی شد که البته نسخه اولیه‌ی آن فقط لینوکس را پشتیبانی می کرد. بد نیست بدانید مدیریت پکیج نود جی اس یا NPM، بزرگترین اکوسیستم کتابخانه متن باز دنیاست!

نصب

بسته به معماری سیستم عامل شما، آخرین نسخه نود جی اس (Nodejs) از صفحه وبسایت رسمی نود جی اس Nodejs Download در اختیار شماست. همین که دانلود کردید، متن پرداز خودتان را باز و شروع به کدنویسی کنید. متن پردازهایی همچون Atom، Notepad++ ،Visual Studio Code و Sublime مناسب این کارهستند.

"سلام دنیا" در نود جی اس

اجازه دهید تشریفات رسمی برنامه نویسی را با ایجاد یک برنامه که عبارت آشنای “Hello World” را در خروجی کنسول نمایش می‌دهد، بجا بیاوریم. ببینید که این تکه برنامه چقدر ساده است:

//file-name : hello-world-in-node.js

console.log('hello world');

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

>node hello-world-in-node.js

راه اندازی یک سرور ساده در نود جی اس

  • در مثال زیر، طریقه راه اندازی یک سرور نودجی اس بیان شده. کمی آن را بررسی  می‌کنیم:
    نود، به کمک یک ماژول توکار http به ما اجازه ایجاد یک سرور می دهد. با دستور require به این ماژول، دسترسی خواهیم داشت.
  • میزبان را مشخص کنیم، مثلا localhost (یا 127.0.0.1)  برای سرور محلی
  • پورت مورد نظرتان را مشخص کنید. مثلا پورت 3000 استفاده می‌کنیم.
  • به کمک متد createServer() سرور را ایجاد می کنیم. این متد یک تابع کال بک را بعنوان آرگومان می‌پذیرد. این کال بک هرزمان که تقاضایی برسد، اجرا می‌شود.
  • دو آرگومان متد createServer() عبارتند از:
  • request : که شامل همه اطلاعاتی است که به تقاضای کلاینت مربوط می‌شود، مثل URL، هدرهای سفارشی، اطلاعات کلاینت و غیره
  • response : که برای برگرداندن داده‌ها به کلاینت استفاده می‌شود.
  • response.writeHead یک متد توکار برای ارسال کد وضعیت و نوع MIME است.
  • بعد از آن، به کمک تابع console.log() مقادیر را نمایش می‌دهیم.
  • response.end() نیز یک تابع توکار برای این است که به سرور بگوید تقاضا تکمیل و برآورده شده است. علاوه بر اینکه به کمک آن می‌توانیم یک پاسخ را نیز ارسال کنیم.
  • server.listenO() نیز تابع توکار دیگری است که برای دریافت درخواست‌های رسیده به یک پورت، شروع به شنود آن پورت می‌کند.

//simple-server-in-nodejs.js

var http = require('http');

var host = '127.0.0.1'
var port = 3000

var server = http.createServer((request, response) => {
response.writeHead(200, {"Content-Type": "text/plain"});
console.log("server Working");
response.end('Server Working Success');
});

server.listen(port,host, (error) => {
if (error) {
return console.log('Error occured : ', error );
}

console.log('server is listening on ' + host + ':'+ port);
});

و باز هم ،برای اجرای کد فوق ،دستور زیر را در خط فرمان به کار می‌بریم:

>node simple-server-in-nodejs.js

ساختن یک سرور در نود جی اس و به کارگیری یک رشته

در کد زیر، علاوه جزئیاتی که قبلا گفته شد و نیازی به تکرار آن‌ها نیست، موارد زیر قابل بررسی است:
متد توکار response.write() برای ارسال پاسخ به یک درخواست به‌کار می‌رود. قبلا گفتیم که متد respond.end() برای ارسال پاسخ به کار می‌رود، ولی تنها برای ارسال یک پاسخ. درحالی که به کمک متد  respond.write() به هرتعداد که بخواهیم، می توانیم پاسخ ارسال کنیم. اکنون اجازه دهید ببینیم رشته‌ها چگونه در یک سرور http در نود جی اس به کار می‌روند.

//serve-string.js

var http = require('http');

var host = '127.0.0.1'
var port = 3000

var server = http.createServer((request, response) => {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World!");
response.end();
});

server.listen(port,host, (error) => {
if (error) {
return console.log('Error occured : ', error );
}

console.log('server is listening on ' + host + ':'+ port);
});

و به یاد داریم که برای اجرا، دستور زیر را درخط فرمان وارد کنیم:

>node serve-string.js

ایجاد یک سرور در نودجی.اس و به کارگیری html

در بخش پیشین ما یاد گرفتیم چگونه یک رشته را در نودجی.اس به‌کار بگیریم، ولی درعمل، بندرت رشته ها را به‌کار می‌گیریم، درعوض در بسیاری از موارد، فایل‌های html را مورد استفاده قرار می‌دهیم. پس اجازه دهید ببینیم چگونه این عمل انجام پذیر است:

//serve-html.js

var http = require('http');
var fs = require('fs');

http.createServer(function (req, res) {
console.log("Port Number : 3000");
// change the MIME type from 'text/plain' to 'text/html'
res.writeHead(200, {'Content-Type': 'text/html'});
//reading the content file
fs.readFile('index.html', (err, data) => {
//checking for errors
if (err)
throw err;
console.log("Operation Success");
//sending the response
res.end(data);
});
}).listen(3000);

برای اجرا، دستور زیر را در خط فرمان وارد کنید:

>node serve-html.js

ایجاد یک سرور و به کارگیری JSON

ممکن است سناریوهای زیادی برای ارسال پاسخ‌ها برای زمانی که پاسخ یک متن ساده نیست، داشته باشیم. بعنوان نمونه، برای رابطهای برنامه نویسی یا api های از نوع REST، باید پاسخی به شکل JSON بفرستیم. بنابراین، اجازه بدین ببینیم این کار چگونه در نود جی اس ممکن است؟

//serve-json.js

var http = require('http');
var fs = require('fs');
console.log('Server will listen at :  127.0.0.1:3000 ');
http.createServer(function (req, res) {
//change the MIME type to 'application/json'
res.writeHead(200, {'Content-Type': 'application/json'});
//Create a JSON
let json_response = {
status : 200 ,
message : 'succssful' ,
result : [ 'sunday' , 'monday' , 'tuesday' , 'wednesday' ] ,
code : 2000
}
console.log('Server Running');
res.end( JSON.stringify(json_response) );
}).listen(3000);

برای اجرای کد فوق، دستور زیر را در خط فرمان وارد کنید:

>node serve-json.js

ایجاد یک سرور در نود جی اس و به کار گیری pdf

اکنون اجازه دهید کمی سرگرم شویم و ببینیم چکونه می‌توان یک فایل pdf را در نود جی اس به کار گرفت:

//serve-pdf.js

var http = require('http');
var fs = require('fs');
console.log('Server will listen at :  127.0.0.1:3000 ');
http.createServer( (req, res)=> {
console.log("Port Number : 3000");
// Change the MIME type to application/pdf
res.writeHead(200, {"Content-Type": "application/pdf"});

fs.readFile('index.pdf', (error,data) => {
if(error){
res.json({'status':'error',msg:err});
}else{
res.write(data);
res.end();
}
});
}).listen(3000);

برای اجرای کد فوق، دستور زیر را درخط فرمان وارد کنید:

>node serve-pdf.js

ایجاد یک سرور و به کار گیری صوت و mp3

این روزها، به کارگیری صوت، یکی از نیازمندیهای اساسی وبسایت‌هاست و البته این کار در نود جی اس بسیار ساده است:

//serve-mp3.js

var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
console.log("Port Number : 3000");
// change MIME type to 'audio/mp3'
res.writeHead(200, {'Content-Type': 'audio/mp3'});
fs.exists('audio.mp3',function(exists){
if(exists)
{
var rstream = fs.createReadStream('audio.mp3');
rstream.pipe(res);
}
else
{
res.end("Its a 404");
}
});
}).listen(3000);

برای اجرای کدفوق، دستور زیر را درخط فرمان بزنید:

>node serve-mp3.js

ایجاد یک سرور نود جی اس و به کارگیری تصویر و mp4

و درآخرین بحث، بهترین کار را ارائه می‌دهیم: به کارگیری تصویر. به کمک یک کد ساده در نودجی.اس، میتوانیم ویدئو را نیز به خدمت بگیریم. تمام کاری که باید انجام دهید این است که فقط نوع MIME را تغییر دهید. به کد زیر دقت کنید:

//serve-mp4.js

var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
console.log("Port Number : 3000");
// change the MIME type to 'video/mp4'
res.writeHead(200, {'Content-Type': 'video/mp4'});
fs.exists('video.mp4',function(exists){
if(exists)
{
var rstream = fs.createReadStream('video.mp4');
rstream.pipe(res);
}
else
{
res.send("Its a 404");
res.end();
}
});
}).listen(3000);

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

>node serve-mp4.js

خلاصه

در این بخش از سری 30 روز از نود جی اس، در مورد سرور نود جی اس نکاتی یاد گرفتیم. همچنین علاوه بر مقدمه‌ای به نود جی اس، یاد گرفتیم که چگونه آن را نصب کنیم. سپس مثال “hello world” را نوشتیم و آموختیم که چگونه یک سرور ساده‌ی html در نود جی اس راه اندازی کنیم و موارد زیر را با هم دیدیم:

  • به کارگیری یک رشته به کمک نود جی اس
  • به کارگیری یک فایل html به کمک نود جی اس
  • به کارگیری JSON به کمک نود جی اس
  • به کارگیری یک فایل pdf به کمک نود جی اس
  • به کارگیری یک فایل mp3 به کمک نود جی اس
  • به کارگیری یک فایل ویدئویی mp4  به کمک نود جی اس
نویسنده شوید
دیدگاه‌های شما (5 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

یوسف
22 اسفند 1400
سلام دوستان دقت کنید که برای استفاده از جیسون ممکنه به مشکل بر بخورید و نیازمند این هستش که یه سری هدر تعریف کنید

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

yusef
18 اسفند 1400
سلام دوست عزیز و مهربان و خردمند من اون قسمت که برای استفاده از HTML بود فراموش کردید ظاهرا کهذکر کنید که باید فایل ایجاد شده باشه

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

ّفاطمه محمدی
08 اردیبهشت 1399
ببخشید یک سوال درمورد http-proxy دارم اگر امکان هست پاسخ دهید خیلی سپاس گذار میشوم. من میخوام تمام request and response روی لوکال خودم یا روی هاست خودم اجرا کنم . از http-proxy استفاده کردم .. خلاصه همه request and response دستکاری نمی کند و فقط چندتا را تغییر می کند. میشه راه حلی ارائه دهید. باتشکر

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امید احمدیانی
09 آبان 1397
سلام وقتتون بخیر به نظرتون nodejs رو برای بک اند که انتخاب کردیم برای فرانت اند کدوم کتابخونه رو استفاده کنیم؟ یا اینکه بسته به نیاز فرق می کنه؟! مثلا اگه با jquery فرانت اند جاواسکریپتمون رو تکمیل کنیم به نظرتون همه ی نیاز های همه ی سایت ها رو جواب میده یا اصلا تفاوتی نمیکنه با وقتی که ما phpرو برای بک اند انتخاب کردیم؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

روکسو
09 آبان 1397
سلام وقت شما بخیر نود جی اس (Nodejs) یک پلتفرم بر مبنای زبان جاوا اسکریپت است که در سمت بک اند (سرور) به کار گرفته می شود. از نظر توانایی و قدرت تقریبا مشابه سایر زبان های برنامه نویسی مثل PHP یا ASP.net در سمت بک اند است. توجه داشته باشید که برای کارایی بهتر نود جی اس، باید از یکی از فریم ورک های سطح بالای جاوا اسکریپت مثل انگولار، ویو جی اس یا ری اکت استفاده کنید. این فریم ورک ها به شما کمک می کنند تا سایتی کاملا تک صفحه ای (SPA) راه اندازی کنید و سرعت نرم افزار شما بسیار بالا می رود. در آکادمی آنلاین روکسو دوره هایی برای آموزش صفر تا صد انگولار و ویو جی اس و nodejs ارائه شده است که می توانید آنها را از لینک زیر دریافت کنید: دوره آموزش جامع و پروژه محور صفر تا صد انگولار دوره آموزش جامع و پروژه محور ویو جی اس دوره آموزش جامع و پروژه محور نود جی اس

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر قراجه داغی
03 آبان 1397
با سلام ! واقعا عالی هستی . ترکیب NodeJS با VueJs خیلی جالب می باشد.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.