В Webpack 1.x я регулярно делал следующее:
require.ensure([ './mod2.js' ], ( require ) => {
setTimeout(() => {
// some later point in time, most likely through any kind of event
var data = require( './mod2.js' ); // actual evaluating the code
},1100);
}, 'myModule2');
С помощью этой методики мы смогли перенести пакет webpack поверх проводника, но затем оцениваем фактическое содержимое (код JavaScript) из этого пакета в некоторый более поздний момент времени. Кроме того, используя require.ensure
, мы могли бы назвать пакет, в данном случае myModule2, чтобы мы могли видеть имя/псевдоним, когда в комплекте выполнялось выполнение webpack.
В Webpack 2.x новый способ использования - System.import
. Пока мне нравится получать объект Promise, у меня есть два вопроса с этим стилем. Эквивалент вышеуказанного кода будет выглядеть следующим образом:
System.import( './mod2.js' ).then( MOD2 => {
// bundle was transferred AND evaluated at this point
});
- Как мы можем разделить передачу и оценку сейчас?
- Как мы все еще можем назвать пакет?
Документация Webpack в Github говорит следующее:
Полная динамическая динамика требует по умолчанию
Зависимость с только выражением (например, require (expr)) теперь создать пустой контекст вместо контекста полного каталог.
Лучший рефакторинг этого кода, так как он не будет работать с модулями ES6. Если это невозможно использовать ContextReplacementPlugin, чтобы намекнуть компилятор к правильному разрешению.
Я не уверен, сыграет ли это роль в этом случае. Они также говорят о разделении кода там, но это довольно кратко, и они не упоминают ни о каких "проблемах" и как обходиться.