Я разрабатываю одностраничное магистральное приложение с помощью requirejs, и сегодня, когда я развернул его на нашем бета-сервере, я обнаружил, что первоначальная загрузка страницы составляла около 20 секунд, пока она загружала все скрипты.
Я предположил, что это произошло потому, что я использовал массив зависимостей при определении таких модулей :
define([
'ui',
'models/user',
'collections/campaigns',
'collections/groups',
'collections/keywords',
'collections/inboxes',
'collections/templates',
'collections/contacts',
'router'
], function (Ui, UserDetails, Campaigns, Groups, Keywords, Inboxes, Templates, Contacts, Router) {
return {
start: function () {
//...
// initialize and start app
//...
}
}
});
. Я полагал, что это означало, что при загрузке основного модуля приложения будут загружены все остальные сценарии, поскольку каждый отдельный модуль использует этот метод.
Затем я изменил метод получения модулей, чтобы получать их по мере необходимости, вызывая require('...')
напрямую, когда они мне нужны, вот так:
define(function (require) {
return Backbone.Router(function () {
//...
// route initializtion etc
//...
inbox: function (routeVar) {
var InboxView = require('InboxView');
this.inboxView = new InboxView();
// render view etc
}
});
});
Однако, к моему удивлению, после повторного запуска приложения и проверки вкладки сети консоли разработчика Chrome -я увидел, что, как и раньше, приложение загружает все мои модули, и я получаю то же время загрузки страницы.
Я полностью упускаю суть? Поскольку у меня сложилось впечатление, что сценарии будут загружаться при каждом вызове require. Разве это не так?