2016-03-30 5 views
0

Если у вас есть запись main.js с этим видом содержания:имя ломоть на асинхронной загрузке модуля

require.ensure('a', function(module){ 
    // 
}, 'chunk1'); 

require.ensure('b', function(module){ 
    // 
}, 'chunk1'); 

require.ensure('c', function(module){ 
    // 
}, 'chunk2'); 

require.ensure('c', function(module){ 
    // 
}, 'chunk2'); 

Webpack будет выводить 3 файла: main.js, chunk1.js и chunk2.js где блок 1 состоит из модулей а и б и chunk2 состоит из модулей c и d;

Теперь я пытаюсь получить такое же поведение, используя динамические асинхронные требуют так:

function dynamicLoad(letter){ 
    require(['./modules/' + letter + '.js'], function(module){ 
     // 
    }); 
} 

Здесь мы не говорим WebPack, как объединить модули вместе с тем выходы будут: main.js и 1.1.js где 1.1 состоит из всех модулей a, b, c и d.

Есть ли способ определить, как мы хотим (или предпочитаем) модули объединяться в куски?

UPDATE:

Я нашел этот плагин split-by-name-webpack-plugin, который делает именно то, что я хочу, но только для ввода куска, не работает для динамического куска. Я рассмотрю этот плагин и посмотрю, смогу ли я заставить его работать так, как я хочу.

ответ

0

Это происходит потому, что все динамические выражения, такие как require(['./modules/' + letter + '.js'], действительно not so dynamic и webpack разрешает их на этапе построения. Поэтому внутренне он перезаписывает ваши требования в require.context, ищет в каталоге все файлы, которые будут достаточны (фактически все файлы js в каталоге modules) и связывают их в один файл.

Чтобы заставить webpack создать отдельный пакет для каждого файла, вам необходимо использовать require.ensure. Но упаковка каждого файла в него - очень утомительный процесс, поэтому я считаю, что вы ищете bundle loader. Он автоматически сделает это за вас.

+0

Как вы произвольно группируете некоторые модули вместе? Я смог заставить его работать с помощью '' 'require.include()' '', но я должен сделать это на всех модулях, которые хочу объединить вместе. Есть ли лучшее решение ? – Ghetolay

+0

Вы по-прежнему можете передать параметр «имя» загрузчику для управления тем, в каком фрагменте идет модуль + все зависимости модуля будут в комплекте автоматически. Если по какой-то причине это по-прежнему не так, как вы хотите, можете ли вы предоставить дополнительную информацию о том, чего вы хотите достичь? – somebody32

Смежные вопросы