30 روز با Node - روز چهارم: ماژول کنسول

20 مرداد 1397
nodejs-console

مقدمه‌ای بر کنسول

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

۱) کلاس کنسول: که شامل متدهایی همچون console.log()، console.warn() و console.error() می‌باشد که می‌توان از آنها در نوشتن استریم‌های نود جی اس بهره برد.

۲) نمونه عمومی کنسول: متدی که از قبل پیکره‌بندی شده و برای نوشتن در process.stderr و process.stdout() بدون فراخوانی انحصاری ماژول require(‘console’) مورد استفاده قرار می‌گیرد.

console.log و کاربردهای متنوع آن

console.log() برای چاپ در stdout استفاده می‌شود و آرگومانهای مختلفی قبول می‌کند. اجازه دهید با مثال‌هایی تنوع کاربرد console.log را ببینیم:

//using ' ' to print
console.log('1 : hello world !');

//using " " to print
console.log("2 : this will also work");
var str = 'nodejsera';
var val = 25;

//printing a string
console.log(str);   //3

//printing a variable and replacing the
//value of variable in place of %d
console.log('4: Value of val is : %d' , val);

//replacing a string in place of %s
console.log('5: %s' , 'this will be printed after 5');      

//concatinating in console           
console.log("6 : str = " + str);     

خروجی به صورت زیر است:

>node "console.log().js"

1 : hello world !
2 : this will also work
nodejsera
4: Value of val is : 25
5: this will be printed after 5
6 : str = nodejsera
 

ایجاد یک کنسول جدید

قطعه کد زیر برای ایجاد یک کنسول جدید نوشته شده است. دقت کنید که خروجی در stdout.log و خطاها (درصورت وجود) در stderr.log دخیره خواهند شد:

var ws = require('fs');
const { Console } = require('console');
const output = ws.createWriteStream('./stdout.log');
const errOutput = ws.createWriteStream('./stderr.log');

// custom simple print
const print = new Console(output, errOutput);

//Now we can use it like console
const roll = 839147;
print.log('roll: %d', roll);
print.log('This will be stored in a file');                                                     

مقادیری که به عنوان خروجی در stdout.log ذخیره خواهند شد عبارتند از:

roll: 839147

This will be stored in a file

پاکسازی کنسول با console.clear

این متد برای پاکسازی کنسول به کار می‌رود. پاکسازی کنسول زمانی مفید است که با یک برنامه بزرگ سر و کار دارید و درآن خروجی‌های زیاد دارید و در زمان دیباگ، می‌خواهید خروجی را فقط از یک نقطه خاص به بعد ببینید. بعنوان مثال، در قطعه کد زیر، ما قصد داریم value را که دربرنامه تغییر می‌کند چاپ کنیم، بنابراین مقادیر قبلی را از کنسول پاک می کنیم تا مقدار نهایی را در پایان ببینیم. این یک مثال بسیار ساده از چگونگی بهره بردن از متد console.clear است.

نکته: از نود جی اس نسخه LTS6.11.3 به بعد استفاده کنید. در نسخه های قبلی این امکانات وجود ندارند.

//Available in Current Version
var value = 10;
console.log("Value : %d", value);

console.clear();
value *= value;
console.log("Value : %d", value);                                                     

خروجی قطعه کد فوق به شرح زیر است:

>node "console.clear().js"

Value : 100

شمارش برچسب‌ها با console.count

این ماژول برای کار با برچسب‌های داخلی به کار می‌رود و هربار که console.count() را با برچسب مشخصی فراخوانی کنید، خروجی آن در stodut نوشته می‌شود. بعنوان مثال در قطعه کد زیر، برچسب‌های default ، remo و rj داریم که به کمک این متد تعداد وقوعشان را در کنسول چاپ می‌کنیم. اگر برچسبی ذکر نشود، بصورت پیش فرض برچسب default درنظر گرفته می‌شود.

نکته: از نسخه LTS6.11.3 به بعد استفاده کنید. در نسخه های قبلی وجود ندارد.

//Available in current version
//This code counts the score of remo , rj and
//default score which goes to none of them

console.count('default');
console.count('remo');
console.count('rj');
console.count('remo');
console.count('remo');
console.count('rj');
console.count();                                                      

خروجی هم به صورت زیر خواهید دید:

>node "console.count().js"

default: 1
remo: 1
rj: 1
remo: 2
remo: 3
rj: 2
default: 2

ریست کردن برچسب کنسول باconsole.countReset

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

نکته: از نسخه LTS6.11.3 به بعد استفاده کنید. در نسخه های قبلی وجود ندارد.

//Available in current version
//This code counts the occurrences of remo , rj and default

console.count('default');
console.count('remo');  //remo=1
console.count('remo');  //remo=2
console.count('rj');    //rj=1
console.countReset('remo'); //remo = 1
console.count('remo');  //remo=2
console.countReset('remo'); //remo=1
console.count('rj');    //rj=2
console.count();        //default=2                                                         

و خروجی هم به صورت زیر:

node "console.countReset().js"

default: 1
remo: 1
remo: 2
rj: 1
remo: 1
rj: 2
default: 2

چاپ خطای کنسول با console.error

این متد برای چاپ در stderr به کار می‌رود. آرگومان‌های متنوعی می‌گیرد که اولین آن آرگومان اصلی و مابقی مقادیر جایگزین هستند. قطعه کد زیر برای همین موضوع ارائه شده است.

نکته: از نسخه LTS6.11.3 به بعد استفاده کنید. در نسخه های قبلی وجود ندارد.

var x = 10;
var y = 20;

var result = x/y;

if(result == 2)
{
    console.log("Result : %d".result)
}
else
{
    console.error("Error : Error in Positioning Operands");
}

خروجی به صورت زیر خواهد بود:

>node "console.error().js"

Error in Positioning Operands

شروع و پایان تایمر با console.time و console.timeEnd

متد console.time() برای راه اندازی یک تایمر جهت انداز‌گیری مدت زمان اجرای عملیات به کار می‌رود. هر تایمر با یک برچسب انحصاری مشخص می‌شود. برای متوقف کردن تایمر باید برچسب آن را به همراه متد cosole.timeEnd به کار ببریم. زمان به کمک متد console.timeEnd() و در مقیاس بصورت میلی ثانیه در stdout چاپ خواهد شد.

console.time('division');

var x = 10;
var y = 20;
var result = x/y;
if(result == 2)
{
    console.log("Result : %d".result)
}
else
{
    console.log("Result : " + result);
}

console.timeEnd('division');                                        

خروجی به صورت زیر خواهد بود:

node "console.time().js"

Result : 0.5
division: 2.895ms

هشدار کنسول با console.warn

این متد همانند متد console.error است و برای چاپ در stderr به کار می‌رود. قطعه کد زیر را ملاحظه کنید:

var x = 10;
var y = 20;

var result = x/y;

if ( (result % 2) == 0)
{
    console.log("Result : %d".result)
}
else
{
    console.warn("Warning :  Decimal number");
}

خروجی به صورت زیر خواهد بود:

>node "console.warn().js"

Warning :  Decimal number                           
                                                            

خلاصه

در این بخش از سری آموزش‌های نود جی اس موارد زیر را بررسی کردیم:

  1. مقدمه ای بر کنسول
  2. کلاس کنسول
  3. نمونه عمومی کنسول
  4. console.log() و تنوع کاربردهای آن
  5. ایجاد یک کنسول جدید
  6. console.clear()
  7. console.count()
  8.  console.countReset()
  9. console.error()
  10. console.time() and console.timeEnd()
  11. console.warn()
نویسنده شوید
دیدگاه‌های شما

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