我怎么能 lazily-load ES6模块?lazy 的意思是我不想实际加载**不需要的模块。例如,我可以用RequireJS做一些事情:
function someEventHandler() {
var SomeModule = require('some-module'),
module = new SomeModule();
// ...
}
使用ES6导入似乎不可能实现相同的功能:
// Doesn't appear to be valid...
function someEventHandler() {
import SomeModule from 'some-module';
var module = new SomeModule();
// ...
}
是否有任何可行的技术可以只在需要的时候使用ES6模块来拉取依赖关系?或者是跟踪完整依赖关系图并预先获取所有内容的唯一途径?
3条答案
按热度按时间kcrjzv8t1#
import
语句只在文件的最顶端工作,它将加载所有文件。这主要是为了避免循环依赖的潜在问题。也会有一种方法来做异步加载;然而,规范似乎还没有最终确定。ES6 module loader polyfill包使用了一个名为
System.import(moduleName)
的方法,该方法返回一个promise,最终规范可能看起来类似:zsbz8rwp2#
ES6中的lazyloading jQuery示例:
5us2dqdw3#
这种 * 动态导入 * 功能现在作为ECMAScript规范的一部分提供-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import