دستورات مختلف در node.js

تعریف node.js

یک پلتفرم بر پایه موتور جاوا اسکریپت گوگل کروم موسوم به V8 می‌باشد که باعث سهولت ایجاد و مقیاس‌پذیری برنامه‌های تحت شبکه می‌شود. این پلتفرم از یک مدل I/O رویداد محور استفاده می‌کند که مسدود نشونده (non-blocking) است و همین امر باعث کاهش فشار موجود بر روی سرور و افزایش کارآیی می‌شود و این امر برای اجرای برنامه‌های مبتنی بر داده که بصورت بلادرنگ (Real-Time) بر روی سرورهای نامتمرکز استفاده می‌شوند بسیار مناسب است. همچنین یک پلتفرم متن باز برای گسترش برنامه‌های سمت سرور و تحت شبکه می‌باشد. این پلتفرم بر اساس زبان جاوا اسکریپت نوشته شده است و قابلیت پیاده‌سازی بر روی سیستم‌عامل‌های ویندوز، لینوکس و سیستم عامل کامپیوترهای اپل را دارد.

دستورات مختلف در node.js

در این بخش دستورات مورد استفاده در node.js را در سه سطح مبتدی، متوسط و پیشرفته نشان خواهیم داد.

سطح مبتدی

  • نوشتن hello world

دستور کد زیر را در یک فایلی به نام "hello.js" می‌نویسیم.

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

با دسترسی به پورت 8080 با استفاده از این لینک http://localhost:8080 قادر به دیدن hello word هستیم.

  • درست کردن ماژول کاربر

ما می‌تونیم با کد زیر ماژول خود را درست کنیم

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

و حالا میتونیم از ماژول بالا در کدمون استفاده کرده و از طریق پورت 8080 دسترسی داشته باشیم.

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);

Output: /summer

  • درست کردن وب سرور
    با استفاده از کد زیر می‌تونیم وب سرور در node.js درست کنیم
var http = require('http');
//create a server object:
http.createServer(function (req, res) {
res.write('Hello World!'); //write a response to the client
res.end(); //end the response
}).listen(8080); //the server object listens on port 8080

Output: /summer

  • اضافه کردن HTTP هدر

ما باید هدر HTTP را زمانی که سرور می‌خواد محتوا را در فرمت HTML نشان دهد اضافه کنیم. سپس ما می‌تونیم از هدر HTTP برای محتوایی که نیاز داریم استفاده کنیم.

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

Output: /summer

  • خواندن کوئری استرینگ

برای خواندن کوئری استرینگ در node.js ما نیاز به پیاده‌سازی کد زیر داریم

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(req.url);
res.end();
}).listen(8080);
  • اسپلیت کوئری استرینگ

ما می‌تونیم با استفاده از ماژول URL کوئری استرینگ را در node.js اسپلیت کنیم.

var http = require('http');
var url = require('url');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var q = url.parse(req.url, true).query;
var txt = q.year + " " + q.month;
res.end(txt);
}).listen(8080);</code

Output:

  • خواندن یک فایل در node.js

ما می‌تونیم با استفاده از متد ()readFile یک فایل را در node.js بخوانیم.

var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
fs.readFile('demofile1.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
}).listen(8080);

Output:

  • فایل خالی با استفاده از متد open

ما می‌تونیم با استفاده از متد open یک فایل خالی در node.js درست کنیم.

var fs = require('fs');
fs.open('mynewfile2.txt', 'w', function (err, file) {
if (err) throw err;
console.log('Saved!');
});

Output:

  • به روز رسانی یک فایل موجود

به روز رسانی یک فایل در node.js در کد زیر نشان داده شده است

var fs = require('fs');
fs.appendFile('mynewfile1.txt', ' This is my text.', function (err) {
if (err) throw err;
console.log('Updated!');
});

Output:

  • جایگزینی محتوای موجود در یک فایل

توسط متد ()writeFile می‌تونیم به این امر دست پیدا کنیم.

var fs = require('fs');
fs.writeFile('mynewfile3.txt', 'This is my text', function (err) {
if (err) throw err;
console.log('Replaced!');
});

Output:

سطح متوسط

  • تریگر کردن یک گزارش در خطاهای بحرانی

ما می‌تونیم زمانی که خطای بحرانی یا Fatal Error رخ داد یک گزارش با استفاده از دستور زیر تریگر کنیم.

–diagnostic-report-on-fatalerror

دستور بالا این اجازه را به ما می‌دهد تا گرفتن گزارش را زمانی که خرابی رخ داد فعال کنیم و برنامه مربوطه را terminate کنیم تا خرابی را بررسی و اشکال یابی کنیم.

  • استفاده از console class

استفاده از console class برای اشکال یابی در node.js‌ (همانند JavaScript) می‌باشد و از ۳ متد ()console.log() ،console.error و ()console.warn بهره می‌برد.

  • درست کردن یک کنسول جدید در node.js

ما میتونیم یک کنسول جدید در node.js با دستور زیر درست کنیم.

const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
const logger = new Console({ stdout: output, stderr: errorOutput });
const count =5;
logger.log(‘count:%d’,count);
  • استفاده از certificate class‌

ما می‌تونیم با استفاده از certificate class‌ با کمک ماژول crypto با دیتا SPKAC‌ کار کرده که بیشتر برای دستیابی به خروجی المان <keygen> در HTML‌ استفاده می‌شود.

  • یک instance جدید از certificate class

از طریق کد زیر قابلیت ایجاد یک instance جدید از certificate class هستیم.

const crypto = require(‘crypto’);
const cert1 = new crypto.Certificate();
const cert2 = crypto.Certificate();

سطح پیشرفته

  • نحوه انتقال آرگومان‌ها به تابع

از طریق کد زیر می‌تونیم آرگومان‌ها را به تابع listener انتقال دهیم.

const myEmitter = new MyEmitter();
myEmitter.on('event', (a, b) => {
console.log(a, b, this);
// Prints: a b {}
});
myEmitter.emit('event', 'a', 'b');
  • اطلاعات مربوط به asynchronous و synchronous

در EventEmitter ،node.js تمامی شنوندگان رو بطور synchronously به ترتیبی که ثبت شده‌اند صدا می‌زند و تابع‌های گوش دهنده می‌تونن به حالت عملکرد asynchronous با استفاده از متدهای ()setlmmediate و یا ()process.nextTick در بیایند.

myEmitter.on('event', (a, b) => {
setImmediate(() => {
console.log('this happens asynchronously');
});
});
myEmitter.emit('event', 'a', 'b');

برای مطالعه پست‌های بیشتر ما را در وبلاگ کارادمی و یا در ویرگول دنبال کنید.