Я запускаю новый проект, и я пересматриваю свои лучшие практики, чтобы попытаться предотвратить любые проблемы, а также посмотреть, какие вредные привычки я получил.
Я не очень доволен тем, как я обрабатываю последовательности инициализации в Javascript, используя шаблон модуля/подмодуля.
Скажем, мой код заканчивается чем-то вроде
FOO.init()
FOO.module1.init()
FOO.module2.init()
FOO.module3.init()
FOO.module4.init()
в глобальной области.
Я по существу делаю (проверка ошибок и подробности опущены для краткости):
var FOO = (function (me) {
me.init = function () {
for (var i in me.inits) {
me.inits[i]();
}
}
return me;
}(FOO || {}));
var FOO = (function (parent) {
var me = parent.module1 = parent.module1 || {};
me.init = function () {
}
parent.inits.push(me.init);
return parent;
}(FOO || {}));
$(document).ready(FOO.init);
для инициализации.
Я знаю, что я читал об этом раньше, но я не могу найти правильные условия поиска, чтобы найти статьи сейчас. Есть ли хорошо продуманный и проверенный шаблон, который обрабатывает инициализацию в синтаксисе, подобном этому?
Спасибо.
EDIT: перечитав это, я думаю, что небольшой контекст будет отвечать на вопросы.
В моем случае каждый модуль/подмодуль находится в собственном файле. Базовый модуль определяет основные функции сайта, а подмодули допускают различные функции. Например, подмодуль может подключить автозаполнение в окне поиска, а другой может превратить статическое изображение заголовка во вращающийся баннер. Подмодули включены/отключены CMS, поэтому я действительно хочу развести явные вызовы внутри базового модуля, чтобы все могло управляться CMS. Я также считаю, что существуют специальные способы CMS для этого, но я ищу общий шаблон Javascript для этого, чтобы обеспечить согласованность и устойчивость проектов, которые могут использовать другую CMS.