لا تحدد مواصفات JavaScript (ECMASCRIPT) مجموعة كاملة من المكتبات القياسية التي يمكن تطبيقها على معظم البرامج. يوفر CommonJS مجموعة من مواصفات مكتبة JavaScript القياسية. العقدة تنفذ مواصفات CommonJS.
أساسيات الوحدة النمطية
في العقدة ، تتوافق الوحدات النمطية والملفات واحدة تلو الأخرى. نحدد الوحدة النمطية:
نسخة الكود كما يلي:
// circle.js
var pi = math.pi ؛
// منطقة وظيفة التصدير
orports.area = function (r) {
إرجاع pi * r * r ؛
}
// دائرة وظيفة التصدير
orports.circumference = function (r) {
إرجاع 2 * pi * r ؛
} ؛
هنا تتم إضافة الوظائف التي تحتاج إلى تصدير إلى كائن الصادرات. لا يمكن الوصول إلى المتغيرات المحلية للوحدة خارجيًا (على سبيل المثال ، متغير PI في المثال أعلاه). تتطلب المكالمات تحميل Module Circle.js:
نسخة الكود كما يلي:
var circle = require ('./ circle.js') ؛
console.log ("منطقة دائرة نصف قطرها 4"
+ Circle.area (4)) ؛
كما ذكرنا ، في الوحدة النمطية ، يوجد كائن الوحدة النمطية يمثل الوحدة نفسها ، والصادرات هي سمة الوحدة النمطية.
تحميل الوحدات النمطية
سوف العقدة العازلة وحدات تحميل لتجنب النفقات العامة لإعادة التحميل:
نسخة الكود كما يلي:
// test.js
console.log ("أنا هنا") ؛
تحميل الوحدة النمطية Test.js عدة مرات
نسخة الكود كما يلي:
// فقط الإخراج "أنا هنا" مرة واحدة
يتطلب ('./ اختبار') ؛
يتطلب ('./ اختبار') ؛
عندما لا يحتوي ملف التحميل على لاحقة ، تحاول Node إضافة اللاحقة وتحميلها:
1..JS (ملف مصدر JavaScript)
2..node (وحدة تمديد C/C ++)
3..JSON (ملف JSON)
هناك العديد من الأنواع الرئيسية من الوحدات النمطية:
1. الوحدة الأساسية. تم تجميع الوحدات الأساسية في العقدة ، ويمكننا العثور على هذه الوحدات الأساسية في دليل LIB في رمز المصدر الخاص به. الوحدات الأساسية المشتركة: Net ، HTTP ، FS Module ، إلخ.
2. وحدة الملف. يتم تحميل وحدة الملفات من خلال المسار النسبي أو المطلق ، مثل Circle.js رأينا أعلاه
3. تخصيص الوحدة النمطية. توجد الوحدة المخصصة في دليل Node_Modules. يتم وضع الوحدات المختلفة التي قمنا بتثبيتها من خلال NPM في دليل Node_Modules.
يتم دائمًا تحميل الوحدات الأساسية أولاً. إذا كانت هناك وحدة مخصصة HTTP ، فسيظل يتم تحميل الوحدة النمطية Core HTTP بدلاً من وحدة HTTP المخصصة عند التحميل. عند تحميل وحدة مخصصة ، ابحث أولاً عن دليل node_modules في الدليل الحالي ، ثم ابحث عن دليل node_modules في الدليل الأصل ، وهكذا حتى الدليل الجذر.
تتطلب عندما تكون الوحدة التي تم تحميلها عبارة عن ملف ، ولكن الدليل ، مثل هذا الدليل يسمى الحزمة. يوجد ملف يسمى package.json (ملف وصف الحزمة) في الحزمة ، على سبيل المثال:
نسخة الكود كما يلي:
{"الاسم": "بعض المكتبات" ،
"Main": "./lib/some-library.js"}
حيث يشير Main إلى الوحدة النمطية التي يجب تحميلها. إذا لم تكن الحزمة. json موجودة في الحزمة أو الحزمة.
عند تحميل وحدة JavaScript ، يتم لف الوحدة المحملة في دالة:
نسخة الكود كما يلي:
وظيفة (الوحدة النمطية ، الصادرات ، __filename ، __dirname ، ...) {
وحدة JavaScript
}
يتم بالفعل تمرير الوحدة النمطية ، الصادرات ، __filename ، __dirname ، وما إلى ذلك. بسبب هذا النوع من الحزم ، لا يمكن الوصول إلى المتغيرات المحلية للوحدة خارجيًا. ولكن في بعض الأحيان هناك مشاكل يصعب فهمها ، مثل:
test1.js
نسخة الكود كما يلي:
الصادرات = {
الاسم: 'name5566' ،
}
test2.js
نسخة الكود كما يلي:
module.exports = {
الاسم: 'name5566' ،
}
قم بتحميل هاتين الوحدين:
نسخة الكود كما يلي:
var test1 = require ('./ test1.js') ؛
console.log (test1.name) ؛ // غير محدد
var test2 = require ('./ test2.js') ؛
console.log (test2.name) ؛ // name5566
يتم تمرير الصادرات كمعلمات إلى الوحدة النمطية. يمكننا إضافة سمات (أو طرق) بشكل طبيعي إلى كائن التصدير من خلال التصدير
1. عند إضافة خصائص إلى الصادرات ، استخدم الصادرات
2. عند تعيين قيمة للتصدير ، استخدم الوحدة النمطية
شنطة
وفقًا لمواصفات CommonJS ، يجب أن تتضمن الحزمة الكاملة:
1.package.json الحزمة الوصف ملف
2.Bin دليل الملف الثنائي
3. Lib JavaScript Code Directory
4. دليل المستند
5. اختبار دليل رمز الاختبار
NPM هي أداة لإدارة الحزم للعقدة. الاستخدام الشائع:
عرض وثائق الأمر:
نسخة الكود كما يلي:
مساعدة NPM تثبيت
عرض وثائق تثبيت الأمر.
تثبيت حزمة:
نسخة الكود كما يلي:
NPM تثبيت redis
تثبيت حزمة redis. يقوم أمر التثبيت بتثبيت الحزمة في دليل node_modules في الدليل الحالي.
إزالة الحزمة:
نسخة الكود كما يلي:
NPM إزالة redis
إزالة حزمة redis. سيقوم الأمر بإزالة إزالة الحزمة في الدليل الحالي.