CommonJS

Зависимости

В CommonJS все статические зависимости require() должны подключаться сверху. Эти require() обработается на этапе сборки, а не на этапе исполнения. Вебпак заменяет их на код из соответствующих файлов.

А вот require.ensure() — это уже другое дело. Он сработает тогда, когда потребуется.

// Плохо. При сборке все равно require будет заменен кодом из модуля:
var favorite = {
    init: function() {
        this.initLazyImages();
    },

    initLazyImages: function() {
        // Такой код сложно читать. Лучше сохранить зависимость в переменную и потом ее вызвать:
        require('../../common/js/lazy.js')();
    }
};

//Хорошо. Сразу ясно, от какого модуля зависим, код стал понятнее после введения переменной lazyLoad.
var lazyLoad = require('../../common/js/lazy.js'); // Сохраняем зависимость в переменную для последующего вызова:

var favorite = {
    init: function() {
        this.initLazyImages();
    },

    initLazyImages: function() {
        // Теперь код стал проще и понятнее:
        lazyLoad();
    }
};