Skip to content

إخراج إلى سطر الأوامر باستخدام Node.js

الإخراج الأساسي باستخدام وحدة التحكم توفر Node.js وحدة تحكم توفر الكثير من الطرق المفيدة للغاية للتفاعل مع سطر الأوامر. إنها في الأساس نفس كائن وحدة التحكم الذي تجده في المتصفح.

الطريقة الأكثر أساسية والأكثر استخدامًا هي console.log()، والتي تطبع السلسلة التي تمررها إليها إلى وحدة التحكم. إذا مررت بكائن، فسوف يجعلها سلسلة.

يمكنك تمرير متغيرات متعددة إلى console.log، على سبيل المثال:

javascript
const x = 'x';
const y = 'y';
console.log(x, y);

يمكننا أيضًا تنسيق عبارات جميلة عن طريق تمرير المتغيرات ومحدد التنسيق. على سبيل المثال:

javascript
console.log('My %s has %d ears', 'cat', 2);
  • %s تنسيق متغير كسلسلة - %d تنسيق متغير كرقم - %i تنسيق متغير كجزئه الصحيح فقط - %o تنسيق متغير ككائن مثال:
javascript
console.log('%o', Number);

مسح وحدة التحكم

console.clear() يمسح وحدة التحكم (قد يختلف السلوك حسب وحدة التحكم المستخدمة).

عد العناصر

console.count() هي طريقة مفيدة. خذ هذا الكود:

javascript
const x = 1;
const y = 2;
const z = 3;
console.count('The value of x is '+x+' and has been checked..how many times?');
console.count('The value of x is'+x+'and has been checked..how many times?');
console.count('The value of y is'+y+'and has been checked..how many times?');

ما يحدث هو أن console.count() ستحسب عدد مرات طباعة سلسلة، وتطبع العدد بجانبها:

يمكنك فقط حساب التفاح والبرتقال:

javascript
const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));

إعادة تعيين العد

تعيد طريقة console.countReset() تعيين العداد المستخدم مع console.count().

سنستخدم مثال البرتقال والتفاح لتوضيح ذلك.

javascript
const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
console.countReset('orange');
oranges.forEach(fruit => console.count(fruit));

طباعة تتبع المكدس

قد تكون هناك حالات يكون من المفيد فيها طباعة تتبع مكدس النداء لوظيفة، ربما للإجابة على سؤال كيف وصلت إلى هذا الجزء من التعليمات البرمجية؟

يمكنك القيام بذلك باستخدام console.trace():

javascript
const function2 = () => console.trace();
const function1 = () => function2();
function1();

سوف يقوم هذا بطباعة تتبع المكدس. هذا ما يتم طباعته إذا جربنا هذا في Node.js REPL:

bash
Trace
at function2 (repl:1:33)
at function1 (rep1:1:25)
at rep1:1:1
at ContextifyScript.Script.xunInThisContext (vm.js:44:33)
at REPLServer.defaultEval(repl.js:239:29)
at bound (domain.js:301:14)
at REPLServer.xunBound [as eval](domain.js:314:12)
at REPLServer.onLine (repl.js:440:10)
at emitone (events.js:120:20)
at REPLServer.emit (events.js:210:7)

حساب الوقت المستغرق

يمكنك بسهولة حساب مقدار الوقت الذي تستغرقه دالة للتشغيل، باستخدام time() و timeEnd().

javascript
const doSomething = () => console.log('test');
const measureDoingSomething = () => {
    console.time('doSomething()');
    // قم بشيء ما، وقم بقياس الوقت الذي يستغرقه
    doSomething();
    console.timeEnd('doSomething()');
};
measureDoingSomething();

stdout و stderr

كما رأينا، فإن console.log رائع لطباعة الرسائل في وحدة التحكم. هذا ما يسمى الإخراج القياسي، أو stdout.

يقوم console.error بالطباعة في دفق stderr.

لن يظهر في وحدة التحكم، ولكنه سيظهر في سجل الأخطاء.

تلوين الإخراج

يمكنك تلوين إخراج النص في وحدة التحكم باستخدام تسلسلات الإفلات. تسلسل الإفلات هو مجموعة من الأحرف التي تحدد لونًا.

مثال:

javascript
console.log('x1b[33ms/x1b[0m', 'hi!');

يمكنك تجربة ذلك في Node.js REPL، وسوف يقوم بطباعة hi! باللون الأصفر.

ومع ذلك، هذه هي الطريقة منخفضة المستوى للقيام بذلك. أسهل طريقة لتلوين إخراج وحدة التحكم هي استخدام مكتبة. Chalk هي هذه المكتبة، بالإضافة إلى التلوين، فهي تساعد أيضًا في ميزات التصميم الأخرى، مثل جعل النص غامقًا أو مائلًا أو مسطرًا تحته.

تقوم بتثبيته باستخدام npm install chalk، ثم يمكنك استخدامه:

javascript
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));

إن استخدام chalk.yellow أكثر ملاءمة بكثير من محاولة تذكر رموز الإفلات، والرمز أكثر قابلية للقراءة.

تحقق من رابط المشروع المنشور أعلاه لمزيد من أمثلة الاستخدام.

إنشاء شريط تقدم

progress هي حزمة رائعة لإنشاء شريط تقدم في وحدة التحكم. قم بتثبيته باستخدام npm install progress.

هذه القطعة من التعليمات البرمجية تنشئ شريط تقدم من 10 خطوات، ويتم إكمال خطوة واحدة كل 100 مللي ثانية. عندما يكتمل الشريط، نقوم بمسح الفترة الزمنية:

javascript
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
    bar.tick();
    if (bar.complete) {
        clearInterval(timer);
    }
}, 100);