Подтвердить что ты не робот

Использование шаблона модуля для более крупных проектов

Я заинтересован в использовании шаблона модуля, чтобы лучше организовать мои будущие проекты. К сожалению, есть только несколько кратких руководств и примеров доказательств концепции модуля.

Используя шаблон модуля, я хотел бы организовать проекты в такую ​​структуру:

project.arm.object.method();

Где "проект" - мое глобальное имя проекта, "рука" - это подраздел или ветвь проекта, "объект" - это отдельный объект и т.д. методам и свойствам.

Однако я не уверен, как я должен декларировать и организовывать несколько "рук" и "объектов" в "проекте".

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

project.arm.object = (function() {

    var privateVar = "Private contents.";

    function privateMethod() {
        alert(privateVar);
    }

    return {
        method: privateMethod
    };

}());

Существуют ли какие-либо передовые методы или соглашения при определении сложной структуры модуля? Должен ли я просто объявить новую руку/объект под последним?

4b9b3361

Ответ 2

Dojo 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.

Ответ 3

Есть много нюансов о том, как люди предпочитают это делать, но основное преимущество того, что вы называете шаблоном модуля (именованной области), заключается в том, что вы не загромождаете глобальное пространство имен, что помогает сохранять вещи чистым, если вы приносите другие библиотеки и т.д., и избегаете конфликтов имен.

Как вы упорядочиваете имена и вложенные области внутри, в основном это вопрос личных предпочтений.