Почему мне кажется, что require.js загружает все мои модули при начальной загрузке страницы?

Я разрабатываю одностраничное магистральное приложение с помощью 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. Разве это не так?

6
задан jcvandan 6 August 2012 в 13:51
поделиться