延迟模块加载在ES6中如何工作

亚当·博杜奇(Adam Boduch)

如何延迟加载ES6模块?通过懒惰,我的意思是我不希望实际加载的模块不需要例如,这是我可以使用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模块仅在需要时引入依赖项?还是跟踪完整依赖关系图并预先获取所有内容的唯一途径?

鞋履

import语句仅在文件的最顶部起作用,并且将加载所有文件。这主要是为了避免循环依赖的潜在问题。

还有一种方法可以进行异步加载。但是规范似乎尚未最终确定。ES6模块加载填充工具包使用调用方法System.import(moduleName)返回一个承诺,最终的规范很可能类似于:

function someEventHandler() {
    System.import('some-module').then((SomeModule) => {
        var module = new SomeModule();
        // ...
    })
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在ES6的import语法中,如何准确评估模块?

来自分类Dev

如何在加载事件的 html 页面中加载 es6 模块

来自分类Dev

如何使Mixins在React ES6中工作?

来自分类Dev

ES6中的导入/导出如何工作?

来自分类Dev

如何特征检测es6模块

来自分类Dev

如何使用延迟加载仅加载angular 8中的模块

来自分类Dev

SystemJ异步加载ES6模块时如何处理Kendo MVC事件绑定

来自分类Dev

从ES6中的模块调用函数

来自分类Dev

无法使用Webpack加载ES6模块

来自分类Dev

ES6 Map垫片如何工作

来自分类Dev

python中的延迟加载模块

来自分类Dev

matDialog 中的延迟加载模块

来自分类Dev

使ES6在WebStorm中工作

来自分类Dev

在Monorepo中的模块之间共享ES6模块

来自分类Dev

如何使用Typescript 1.7中的CommonJS模块正确生成ES6目标?

来自分类Dev

如何通过ES6中的subClass参数导入节点模块?

来自分类Dev

ES6模块范围

来自分类Dev

ES6模块短路

来自分类Dev

通过导入ES6模块来加载和使用旧版JS模块(例如IIFE)

来自分类Dev

ES6的模块加载器也可以加载资产(html / css / ...)

来自分类Dev

ES6模块加载器不会加载使用TypeScript编写的Angular Controller

来自分类Dev

在angularjs语法es6中清除输入时,如何默认从服务器加载数据?

来自分类Dev

ReactJS.net-我如何使用ES6模块

来自分类Dev

如何测试使用jsdom导入jQuery的ES6模块

来自分类Dev

如何导入香草JS ES6模块打字稿?

来自分类Dev

如何在Safari上提供ES6模块?

来自分类Dev

如何让 mixin 填充状态 ES6 模块?

来自分类Dev

如何让 webpack treeshake 我的 ES6 模块?

来自分类Dev

是否在TS 1.7中重新导出ES6模块?