В webpack 1 docs is statement, что в WebPack 2 будет использовать System.import()
для динамического требуется:Разница между System.import() и import()?
К счастью, существует JavaScript API «Загрузчик» спецификация быть написана для обработки динамического использования:
System.load
(илиSystem.import
). Этот API будет нативным эквивалентом вышеперечисленным вариантамrequire
.
И за это время по всему миру было examples из этого System.import()
.
Before releasing webpack 2, авторы решили изменить System.import()
к import()
:
import()
добавить в код Разделительный конструкции. Он должен использоваться вместоSystem.import
, когда это возможно.System.import
будет устаревшим в webpack 2 release (снято в webpack 3) , так как это неправильное поведение в соответствии со спецификацией.
import()
это основано на tc39/proposal-dynamic-import спецификации, и вы можете прочитать, почему они сделали это изменение here.
Может кто-то объяснить разницу между System.import()
и import()
?
Несмотря на различные названия, использование выглядит так же:
import(modulePath)
.then(module => module.default())
.catch(/* ... */);
System.import(modulePath)
.then(module => module.default())
.catch(/* ... */);
Но в weback 2 дока является: «System.import()
поведение неправильно согласно спецификации» - так это предположить, что существует разница между System.import()
и import()
,
Если я читаю ссылки, которые вы предоставили право, очень важным отличием является то, что 'import()' знает о скрипте или модуле, которые его вызывали, а 'System.import()' is not. Если я прав, это означает, что возможен импорт («../foo»), то есть разрешение относительно текущего модуля. Опять же, я могу ошибаться, пожалуйста, поправьте меня. –
Похоже, что разница возникла из [этой проблемы github] (https://github.com/webpack/webpack/issues/2163) – Marlon