Вы используете модульный javascript.
Выберите свой предпочтительный упаковщик (мой - browserify ), который упаковывает все ваши модули в один пакет, который вы уменьшаете и gzip.Вы отправляете этот файл клиенту, и он кешируется.
Это означает, что вы кэшировали весь свой код, минимизировали HTTP-запросы и оставались экономными и эффективными.
А так как у вас есть модульный код, вы простозагрузите ваш код, как обычно.
Лично я бы использовал некоторые функции обнаружения форм для загрузки модулей.Вы можете выбрать функцию обнаружения почти для любой функции (некоторые селекторы css, маршруты, сегменты URL).
Определение функции будет выглядеть следующим образом:
var Features = {
"class": "name",
"class2": "name2",
"dynamic-scroll": "dynamic-scroll",
"tabstrip": "tabstrip",
...
}
for (var key in Features) {
require(Features[key]);
}
Где как маршрутизация с Дэвис будет выглядеть как
Davis(function() {
this.get("blog", function(req) {
require("blog")(req);
});
this.get("blog/:post", function(req) {
require("blog-post")(req);
});
this.get("shop", function(req) {
require("shop")(req);
});
...
});
В качестве альтернативы вы можете попробовать архитектуру, управляемую событиями.Это означает, что каждый модуль привязывается к событиям
// some-module
mediator.on("blog-loaded", function() {
// load in some libraries
// construct some widgets
mediator.emit("blog-ui-build", widgets);
});
И вам понадобится начальная загрузка, чтобы запустить цикл обработки событий. Не стесняйтесь смотреть на демонстрацию EDA