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

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

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

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
    };

}());

Есть ли какие-либо лучшие практики или конвенции при определении сложной структуры модуля? Я должен просто объявить новую руку/объект под последним?

18
задан Justin Johnson 27 April 2010 в 02:00
поделиться

3 ответа

Вот хорошее описание того, что вам нужно; http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth

20
ответ дан 30 November 2019 в 08:32
поделиться

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

То, как вы организуете имена и вложенные области видимости, в значительной степени зависит от личных предпочтений.

2
ответ дан 30 November 2019 в 08:32
поделиться

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
ответ дан 30 November 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: