[MUSIC]
في هذا الدرس، سوف نتعلَّم كيف يمكننا كتابة إشعارات بسيطة.
سنتعرف أيضًا على وحدات Node
وكيف تمكننا وحدات Node من تنظيم تطبيقاتنا في ملفات متعددة.
سنتعرف أيضًا على أنواع مختلفة من وحدات العقدة
وكيف يمكننا استيراد وحدات العقدة إلى ملفاتنا الخاصة بتطبيق العقدة
والاستفادة منها داخل تطبيقنا.
أولا، دعونا نتعرف على وحدات العقدة بمزيد من التفصيل في هذه المحاضرة.
جافا سكريبت، عندما تم تصميمه لأول مرة
كان من المفترض أن تكون لغة البرمجة النصية لاستخدامها داخل المتصفح.
وبالتالي فإن المجال الصغير الذي كان من المفترض أن تستخدم فيه هو المتصفح.
الآن، كما تفهم من هذا التخصص، فقد
تجاوزت جافا سكريبت هدفها الأصلي، ويجري الآن استخدامها لكتابة التطبيقات.
كلاهما ليتم تشغيله باستخدام أطر العمل داخل المتصفح،
وأيضا لتشغيل التطبيقات على جانب الخادم، كما سنرى في هذه الدورة.
لم يتم تصميم جافا سكريبت في الأصل مع أي مكتبات مشتركة.
إذا نظرت إلى لغات البرمجة القياسية مثل C و C ++ و Java وما إلى ذلك،
فجميعها تحتوي على مكتبات قياسية تمكنك من الوصول
إلى الأجهزة الأساسية.
وأيضا توفير طريقة منظمة لتنظيم التطبيق في
ملفات متعددة ومن ثم الجمع بينهما معا عند إنشاء تطبيق.
لم يكن لدى JavaScript أي من هذا الدعم عندما بدأ.
لأنه كما نفهم لم يتم تصميم جافا سكريبت
للغرض الذي يتم استخدامه من أجله اليوم.
ولكن بالطبع،
فهم الناس الصعوبات عندما تحتاج إلى توسيع جافا سكريبت
وراء ملف واحد يستخدم كلغة برمجة للمتصفح.
الآن، إذا كان لديك تطبيق JavaScript كبير جدًا،
يصبح من الصعب كتابة الشفرة بأكملها في ملف واحد.
ومن الواضح أنك تريد أن تكون النتائج قادرة على كسر التطبيق الخاص بك إلى
حقائق متعددة.
الآن، على عكس لغات البرمجة التقليدية، لم يكن لدى JavaScript طريقة
لتوزيع الشفرة في ملفات متعددة ثم دمجها معًا.
لذلك هذا هو المكان الذي جاءت فيه واجهة برمجة تطبيقات CommonJS لملء هذه
الفجوة التي تملأ الاحتياجات لبعض التطبيقات الشائعة.
ويحدد تنسيق CommonJS هذا تنسيق الوحدة النمطية التي يمكن استخدامها
لتقسيم تطبيق JavaScript الخاص بك إلى ملفات متعددة.
و عقدة تعتمد هذا الشكل CommonJS
لتنظيم تطبيق جافا سكريبت لدينا في ملفات متعددة.
وداخل جافا سكريبت، مع تنسيق CommonJS،
يصبح كل ملف وحدة العقدة الخاصة به.
لذلك دعونا نتعلم أكثر قليلا عن وحدات العقدة في بقية هذه المحاضرة.
لذلك كما ذكرت للتو،
يصبح كل ملف في تطبيق عقدة وحدة العقدة الخاصة به.
لذلك يحدد الملف أو ملف JavaScript الحدود لوحدة العقدة.
لذلك داخل هذا الملف،
توفر مواصفات CommonJS متغيرًا يسمى متغير الوحدة النمطية وهو كائن JavaScript.
وهذا يمنحك الوصول إلى تعريف الوحدة النمطية الحالي داخل ملف.
وعلى كائن الوحدة النمطية هذا، لديك
خاصية module.exports التي تحدد التصدير من الوحدة النمطية الحالية.
لذلك عند تعيين شيء إلى الخاصية module.exports،
فإن ذلك يصبح القيمة المصدرة من الوحدة النمطية الحالية.
بحيث عندما يتم استيراد هذه الوحدة إلى ملف آخر
من تطبيق عقدة لدينا، ثم كل ما يتم تصديره من هذه الوحدة
يصبح متاحا في التطبيق الثاني.
سنلقي نظرة على مثال باختصار في حين.
عندما تحتاج إلى استيراد وحدة نمطية إلى وحدة نمطية أخرى،
فهذا هو المكان الذي يتم فيه استخدام الدالة المطلوبة لاستيراد الوحدة النمطية.
لذلك كما سنلاحظ في فترة قصيرة، يتم استخدام وظيفة تتطلب
لاستيراد وحدة عقدة التي يتم تعريفها في ملف آخر إلى الملف الحالي
بحيث يمكن استخدامها داخل تطبيق عقدة لدينا.
يمكن أن تكون وحدات العقدة من ثلاث فئات.
لدينا وحدات العقدة المستندة إلى الملف حيث نحدد وحدة العقدة داخل ملف،
داخل تطبيقنا ونستفيد منه داخل تطبيقنا.
ثم، لدينا الوحدات الأساسية التي هي بالفعل جزء من عقدة.
أبقى مصممو العقدة هذه الوحدات الأساسية صغيرة عمدا
بحيث يمكن الاحتفاظ عقدة صغيرة.
كما توفر وظائف كافية
بحيث يمكن لمصممي الوحدة الخارجية إضافة
وظائفهم الخاصة التي يمكن الاستفادة منها عندما قمنا بتطوير تطبيقات العقدة.
وبالتالي فإن الوحدات الأساسية تشمل المسار، ونظام الملفات، ونظام التشغيل، واستخدام وعدد قليل من الآخرين.
سوف نواجه البعض منهم ونحن نذهب على طول في هذه الدورة.
ثم لدينا وحدات العقدة الخارجية.
هذه هي وحدات عقدة طرف ثالث التي تم تطويرها من قبل مطوري عقدة، ومن
ثم توفيرها من خلال النظام البيئي عقدة.
لذلك يمكن تثبيت وحدات العقدة الخارجية هذه داخل نظامنا باستخدام الآلية الوقائية الوطنية.
كثيرًا ما ترانا نستخدم تثبيت NPM
واسم وحدة Node والتي سيتم تضمينها
في تطبيق Node الخاص بنا في مجلد باسم مجلد node_modules.
وسوف نواجه وحدات العقدة الخارجية في درس لاحق في هذه الدورة.
كيف يمكننا الاستفادة من وحدات العقدة؟
عندما تحتاج إلى استخدام وحدة نمطية عقدة داخل ملف عقدة آخر داخل التطبيق الخاص بك،
ثم يمكنك استخدام وظيفة تتطلب.
ذكرت بإيجاز عن وظيفة تتطلب في واحدة من
الشرائح السابقة هناك.
تتطلب وظيفة وحدات العقدة المستندة إلى الملف،
سوف تحدد هذا حسب الحاجة
ثم حدد المسار إلى الملف الذي يحتوي على وحدة العقدة.
لذلك يمكنك أن تقول require./، اسم الوحدة النمطية إذا كان الملف موجودًا
في المجلد الحالي المكتوب الذي يوجد فيه تطبيق Node الخاص بك.
لذلك يحدد هذا المسار النسبي للملف من الموقع الحالي.
وأيضا بالنسبة للوحدات الأساسية والخارجية،
كنت عادة تحديدها عن طريق القول تتطلب واسم الوحدة.
يمكنك تحديد مسار له بشكل صريح.
إذا كانت وحدة نمطية أساسية، فهي بالفعل جزء من العقدة وبالتالي
سيتم تضمينها تلقائيًا.
إذا كانت وحدة نمطية خارجية، فسيتم تثبيتها إما داخل
مجلد node_modules في المجلد الحالي، أو إذا لم
تجد العقدة الوحدة النمطية الخارجية داخل المجلد node_modules في المجلد الحالي،
فسوف ترتفع إلى المجلد الأعلى التالي يبحث عن وحدة العقدة.
أو مجلد المستوى الأعلى التالي
وفوق التسلسل الهرمي حتى يحدد موقع وحدات العقدة التي
سيتم استيرادها بعد ذلك لاستخدامها داخل تطبيق عقدة الخاص بك.
إذا لم تتمكن من العثور على وحدة العقدة في التسلسل الهرمي،
فمن الواضح أنه سيثير خطأ يقول أن وحدة العقدة مفقودة.
هذه الطريقة في التنظيم مفيدة للغاية في الطريقة
التي يتم بها تعريف بنية تطبيق العقدة حيث سنواجه
المزيد في الجزء الأخير من هذه الدورة.
مع هذه المقدمة السريعة لوحدات العقدة، دعونا نلقي نظرة على مثال
سنقوم به كجزء من التمرين الذي يلي هذه المحاضرة.
كما تعلمنا في هذه المحاضرة،
يتم تعريف حدود الوحدة النمطية للعقدة بواسطة الملف الذي يحتوي على الشفرة هنا.
حتى هنا، لدي مثال على وحدة عقدة المعرفة باسم rectangle.js.
وهناك يمكنك أن ترى أن أنا باستخدام اثنين من الصادرات هنا،
وأنا أقول exports.perifeter و exports.area.
وسترى أنني هنا لا أستخدم module.exports لأن
الصادرات نفسها هي أيضًا نسخة مختصرة من module.exports.
لذلك إذا كنت لا ترغب في استخدام module.exports بالكامل ولكن
بدلاً من ذلك تريد فقط التصدير، فهذه طريقة أخرى لكتابة
تلك العناصر التي يتم تصديرها من وحدات العقدة الحالية.
حتى هنا نحن تصدير وظيفتين، محيط
والمنطقة من وحدة عقدة المستطيل.
الآن من أجل الاستفادة من هذه الوحدة في ملف آخر،
ثم دعونا نلقي نظرة على ملف index.js.
والسطر الأول في هذا الملف ستلاحظ أنه يقول
var rect = تتطلب وداخل علامات الاقتباس،. /مستطيل.
لذلك هذا هو تحديد أن وحدة المستطيل ستكون مهمة هنا،
لقد استخدمت داخل هذا الملف معين من التطبيق.
إذن هذه هي الطريقة التي نحدد بها وحدات العقدة،
وهذا مثال على وحدة العقدة المستندة إلى الملف.
سنواجه
وحدات العقدة الأساسية والخارجية في دروس لاحقة من هذه الدورة.
[ موسيقى]