تعد الوحدات جزءًا لا يتجزأ من أي تطبيق قوي وغالبًا ما تساعدنا في فصل وحدات التعليمات البرمجية بشكل واضح في المشاريع.
طرق لتنفيذ الوحدات النمطية في JS:
1. تمثيل حرفي كائن
2. وضع الموديل
3. وحدة AMD
4. وحدة CommonJS
5.Casscript Harmony Module
كائن حرفي
لا تحتاج إلى إنشاء تصميم حرفي للكائن باستخدام المشغل الجديد ، ولكن لا يمكن استخدامه في بداية البيان ، لأنه يمكن تفسير البداية على أنها بداية كتلة. خارج الكائن ، يمكن إضافة أعضاء جدد إلى الكائن الحرفي باستخدام عبارة التعيين التالية ، mymodule.property = "SomeValue".
var mymodule = {myProperty: "SomeValue" ، myConfig: {Usecaching: true ، اللغة: "en" ، // الطريقة الأساسية myMethod: function () {// ...} ، // output information استنادًا إلى التكوين الحالي mymethod2: function () {console.log ("caching is: "تمكين": "معطل") ؛ } ، // أعد كتابة التكوين الحالي mymethod3: function (newConfig) {if (typeof newConfig === "object") {this.myconfig = newConfig ؛ console.log (this.myconfig.language) ؛ }} ،} ؛ mymodule.mymethod3 ({اللغة: "FR" ، usecaching: false})يساعد استخدام الكائن الحرفي في تغليف وتنظيم التعليمات البرمجية.
في JavaScript ، يتم استخدام نمط الوحدة النمطية لمزيد من محاكاة مفهوم الفئات ، بالطريقة التي يمكن أن يكون للكائن المنفصل أساليب ومتغيرات عامة/خاصة ، وبالتالي حظر الأجزاء الخاصة من النطاق العالمي.
يستخدم نمط الوحدة الإغلاق لتغليف الحالة والتنظيم "الخاص". إنه يوفر طريقة لالتفاف مزيجًا من الأساليب والمتغيرات العامة والخاصة لمنع التسريبات إلى النطاق العالمي والتعارض مع واجهات المطورين الآخرين. من خلال هذا الوضع ، تحتاج فقط إلى إرجاع واجهة برمجة تطبيقات عامة ، ويتم الحفاظ على كل شيء آخر في إغلاق خاص.
في وضع الوحدة النمطية ، نظرًا لوجود عمليات الإغلاق ، تتوفر المتغيرات والأساليب المعلنة فقط داخل الوضع ، ولكن المتغيرات والأساليب المحددة على كائن الإرجاع متاحة للمستخدمين الخارجيين.
تنفيذ وضع الوحدة النمطية
var testmodule = (function () {var counter = 0 ؛ return {streementCounter: function () {return ++ counter ؛} ، resetCounter: function () {console.log ("قيمة مضادة قبل إعادة التعيين" +counter) ؛ counter = 0 ؛}}}) () ؛ testModule.ResetCounter () ؛الجزء الآخر من الكود هو أنه لا يمكن قراءة stestcrementCounter () و ResetCounter () مباشرة. يتم عزل المتغير المضاد تمامًا تمامًا عن النطاق العالمي ، لذا فهو يعمل مثل متغير خاص يقتصر وجوده على إغلاق الوحدة ، لأن الكود الوحيد الذي يمكنه الوصول إلى نطاقه هو هاتين وظيفتين. لقد قامت الطريقة أعلاه بتعيين مساحة الاسم بشكل فعال ، لذلك في رمز الاختبار ، يجب أن تسبق جميع المكالمات.
// وضع الوحدة النمطية التي تحتوي على مساحة الاسم ، والمتغيرات العامة ، والخاصة var mynamspace = (function () {// private count MyPublicfunction: function (bar) {myPrivinVar ++ ؛المرجع المتغيرات العالمية
لدى JavaScript ميزة تسمى المتغيرات العالمية الضمنية. بغض النظر عما إذا كان قد تم استخدام متغير أم لا ، فإن مترجم JavaScript يعكس سلسلة النطاق للعثور على إعلان VAR للمتغير بأكمله. إذا لم يتم العثور على VAR ، يفترض المترجم المترجم أن المتغير هو متغير عالمي. إذا تم استخدام المتغير لتشغيل المهمة ، إذا لم يكن موجودًا من قبل ، فسيقوم المترجم بإنشائه تلقائيًا. هذا يعني أنه من السهل جدًا استخدام أو إنشاء متغيرات عالمية في عمليات إغلاق مجهولة ، ولكن الأمر الأكثر صعوبة هو أن الكود يصعب إدارته ، خاصةً عندما يرى الأشخاص الذين يقرؤون الكود العديد من المتغيرات التي تكون عالمية وأيها محلية.
لحسن الحظ ، في وظائف مجهولة ، يمكننا توفير بديل بسيط نسبيا. يمكننا نقل المتغيرات العالمية إلى وظائف مجهولة كمعلمة واستخدامها. بالمقارنة مع المتغيرات العالمية الضمنية ، فهو واضح وسريع. لنأخذ مثالًا:
// الوحدة العالمية var mymodule = (function (jq ، _) {function privatemethod1 () {jq (". container"). mymodule.publicmethod () ؛ // الوحدة العالمية var mymodule = (function () {// module object module = {} ؛ privatevariale = "hello" ؛ function privatemethod () {//...إعلان المتغيرات العالمية دون تنفيذها ويمكن أيضًا دعم مفهوم المقدمة العالمية
لا تزال هناك بعض أوجه القصور في وضع الوحدة النمطية:
1. نظرًا لأننا نصل إلى الأعضاء العامين والخاصين بشكل مختلف ، عندما نريد تغيير الرؤية ، يتعين علينا فعليًا تعديل كل وجود استخدم هذا العضو.
2. لا يمكننا الوصول إلى هؤلاء الأعضاء الخاصين المضافة إلى الطريقة لاحقًا.
3. غير قادر على إنشاء اختبارات الوحدة الآلية للأعضاء الخاصين ، ويتم إضافة تعقيد إضافي عندما تحتاج الأخطاء إلى إصلاح.
4. لا يمكن للمطورين تمديد الأساليب الخاصة بسهولة
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.