سؤال

أنا مهتم باستخدام نمط الوحدة لتنظيم مشاريعي المستقبلية بشكل أفضل. لسوء الحظ ، لا يوجد سوى عدد قليل من البرامج التعليمية القصيرة وأمثلة إثبات المفهوم لنمط الوحدة النمطية.

باستخدام نمط الوحدة ، أود تنظيم مشاريع في هذا النوع من الهيكل:

project.arm.object.method();

عندما يكون "Project" هو اسم مشروعي العالمي ، "ARM" هو قسم فرعي أو فرع للمشروع ، "Object" هو كائن فردي ، وهكذا إلى الأساليب والخصائص.

ومع ذلك ، لست متأكدًا من كيفية إعلان وتنظيم "أذرع" و "كائنات" متعددة تحت "المشروع".

var project = window.project || {};
project.arm = project.arm || {};

project.arm.object = (function() {

    var privateVar = "Private contents.";

    function privateMethod() {
        alert(privateVar);
    }

    return {
        method: privateMethod
    };

}());

هل هناك أفضل الممارسات أو الاتفاقيات عند تحديد بنية الوحدة النمطية المعقدة؟ هل يجب أن أعلن فقط ذراع/كائن جديد تحت الأخير؟

هل كانت مفيدة؟

المحلول

إليك كتابة جيدة على ما تتبعه ؛ http://www.adequalitygood.com/2010/3/javascript-module-patern-in-depth

نصائح أخرى

دوجو dojo.declare رائع لهذا النوع من الأشياء منذ ذلك

قم بإنشاء مُنشئ باستخدام تدوين مضغوط للميراث وتمديد النموذج الأولي.

كما أنه مناسب حقًا حتى لو لمجرد إزالة هذا النوع من لوحة المرجل:

var project = window.project || {};
project.arm = project.arm || {};

إذا كنت تريد فقط هذه الميزة ، فيمكنك استخدامها dojo.setObject, ، ولكن بالطبع ، فإن كتابة شيء لفعل الشيء نفسه أمر تافلي.

dojo.setObject("project.arm.object" (function() {
    var privateVar = "Private contents.";

    function privateMethod() {
        alert(privateVar);
    }

    return {
        method: privateMethod
    };
}()));

لقد استخدمت مؤخرًا dojo.declare/dojo.setObject بالنسبة لمشروع JavaScript كبير (86 ملفًا ، 7K+ خطوط (لا تحسب التعليقات والخطوط الفارغة)) ، وكان نسيمًا للحفاظ على كل شيء منظمًا وقابل للإدارة ، خاصةً عندما يكون لديك آلية إدراج مثل dojo.require و dojo.provide.

هناك الكثير من الفروق الدقيقة لكيفية تفضيل الناس القيام بذلك ، ولكن الفائدة الرئيسية لما تسميه نمط الوحدة النمطية (النطاق المسمى) ، هو أن لا تشوش مساحة الاسم العالمية ، مما يساعد على إبقاء الأمور نظيفة إذا كنت جلب مكتبات أخرى وما إلى ذلك ، وتجنب تصادمات الاسم.

كيف تنظم الأسماء والنطاقات المتداخلة داخلها إلى حد كبير مسألة تفضيل شخصي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top