إذا سبق لك استخدام Node.js، فقد تكون على علم بأنها تأتي مع REPL قوي وسهل الاستخدام. صدفة تفاعلية (interactive shell) لـ Node.js تعيش في طرفيتك ويمكنها تنفيذ JS، واستيراد الاعتماديات، وحتى حفظ الجلسات.
Node.js REPL (حلقة القراءة-التقييم-الطباعة) هي صدفة تفاعلية (شبيهة بوحدة التحكم في المتصفح) لبيئة Node.js تتيح لنا كتابة أي كود JavaScript صالح فيها. تُستخدَم لاختبار وتقييم وتجربة أو تصحيح الكود بطريقة أسهل وأكثر سهولة الوصول إليها.
بعبارة أخرى، يمكنها قراءة الإدخال من المستخدم، وتقييمه، وطباعة النتيجة، وقبول إدخال آخر. وتكرار ذلك. ومن هنا جاء اسم حلقة القراءة-التقييم-الطباعة (Read-Evaluate-Print Loop).
المتطلبات الأساسية
تأكد من امتلاك Node.js مثبَّتة على جهازك. يمكنك التحقق من ذلك بتشغيل node --version في طرفيتك. تعمل جميع الأوامر التي سترى في هذا الدرس التعليمي على أنظمة Windows وUnix.
بداية سريعة
لنبدأ ببساطة. افتح نافذة الطرفية (cmd) لديك واكتب node.
هنا يمكنك تنفيذ أوامر JavaScript المفضلة لديك. ببساطة اكتب أمرك واضغط Enter للتقييم.
بالطبع، لست بحاجة لكتابة كل شيء في سطر واحد. يمكنك إنشاء عبارات متعددة الأسطر بمجموعة مفاتيح Shift + Enter.
ثم أخيرًا اضغط Enter للتقييم.
بدلًا من ذلك، يمكنك كتابة .editor الذي يفتح وضع المحرر، على غرار Vim. تنشئ سطرًا جديدًا بمفتاح Enter. بمجرد الانتهاء من الكتابة، يمكنك تقييم كودك بالضغط على CTRL/CMD+D.
لمسح وحدة التحكم، يمكنك استخدام أمر مسح وحدة التحكم القياسي، console.clear()
أخيرًا، يمكنك الخروج من REPL باستخدام CTRL/CMD+C
نظرة سريعة على توثيق JavaScript
شيء رائع آخر بخصوص REPL هو أنه يعطيك قائمة بالأوامر المتاحة لك. اكتب الأمر واضغط على النقطة. بعدها اضغط على مفتاح Tab مرتين. سيطبع هذا جميع الخصائص والدوال على ذلك الكائن.
console. tab tab
يمكن أن يكون هذا تذكيرًا مفيدًا، بما أنك على الأرجح لا تعرف جميع الدوال الممكنة على السلاسل النصية والمصفوفات والكائنات، إلخ. يمتلك REPL أيضًا IntelliSense، لذا أثناء الكتابة سيقترح خيارًا للإكمال التلقائي.
يعمل هذا أيضًا على أي متغيرات تنشئها بنفسك.
يمكنك كتابة .help في أي وقت لرؤية ما هو متاح أيضًا.
استخدام وحدات Node.js داخل REPL
كونه Node.js REPL يعني أنه يمكنك أيضًا استيراد أي من الوحدات الأساسية، سواء HTTP أو نظام الملفات أو OS أو أي شيء آخر تقريبًا.
وبالمثل، يمكنك الاستفادة من حيلة الضغط على Tab مرتين لكشف جميع الدوال المتاحة على وحدات Node.js.
كما يمكنك فقط كتابة حرف واحد أو جزء من الكلمة والضغط على Tab مرتين وستكمل Node.js تلقائيًا جميع الوحدات/الكائنات/الدوال التي تبدأ بذلك الحرف، مثلًا اكتب h واضغط مفتاح Tab مرتين.
استخدام وحدات NPM داخل REPL
ربما تتساءل هل من الممكن استخدام أي من الوحدات الخارجية داخل REPL، مثل Express أو Day.js أو Rx.js أو غيرها؟
نعم، بالطبع! طالما أن الحزمة إما جانب خادم أو متعددة المنصات ومثبَّتة عالميًا.
بادئ ذي بدء، يمكنك البحث في حزم npm مباشرة عبر طرفيتك (خارج REPL). اكتب npm search <keyword>، حيث الكلمة المفتاحية هي اسم أو وصف الحزمة التي تبحث عنها.
لنبحث عن Express، npm search express.
هنا يمكننا رؤية جميع النتائج المطابقة لـ"Express". يمكنك أيضًا فتح الصفحة الرسمية أو مستودع GitHub للحزمة المطلوبة.
npm show <package> # returns more information on the package
npm home <package> # returns official homepage
npm repo <package> # returns github repository pageمثال آخر على البحث باستخدام كلمة ذات صلة بالحزمة. على سبيل المثال، هناك مجموعة من المكتبات على NPM تعمل مع تنسيقات التاريخ. إذا أدخلت npm search date ستعيد مكتبات مثل Moment وDate-Fns وDay.js، إلخ.
الآن بعد أن وجدنا الحزمة المطلوبة، نحتاج لتثبيتها عالميًا لاستخدامها داخل REPL.
npm i -g dayjs
# if the previous command does not work
npm i --location=global dayjsيمكنك بعدها تشغيل أمر npm list -g --depth=0 للتحقق من جميع الحزم التي ثُبِّتت عالميًا.
الآن انتقل إلى مجلد تثبيت Node.js على جهازك. يمكنك إيجاده بإدخال الأمر npm root -g أو npm root --location=global وسيعيد هذا المسار الصحيح:
- win: C:\Program Files\nodejs\node_modules
- mac: /usr/local/lib/node_modules
بعدها انتقل إلى المجلد يدويًا أو عبر سطر الأوامر (cd /usr/local/lib/node_modules) وابدأ جلسة REPL جديدة داخل هذا المجلد (node + Enter)
احفظ وحمّل تقدّمك
آخر معلومة أريد مشاركتها اليوم هي أنه باستخدام REPL يمكنك حفظ تقدّمك وتحميله في أي وقت.
للحفظ، ببساطة اكتب .save <file-name.js> عند الانتهاء. سيحفظ هذا جلسة REPL الحالية في ملف داخل المجلد الذي كنت فيه.
للاستئناف، اكتب .load <file-name.js>