javascript – 如果我使用ES6模块,是否还需要模块加载器?

不幸的是,我对JavaScript模块加载器的了解仍在增长,我正在努力了解它们与新ES6模块的关系.据我所知,使用像CommonJS或RequireJS这样的模块加载器,使用符合ES5的JavaScript,实际上需要使用异步模块加载器来提高性能,并仅在需要时使用相应的模块加载器语法加载.

然而,在查看ES6 module documentation并阅读其他信息时,在我看来,通过导入和导出关键字本机支持模块加载.如果是这种情况,我是否正确ES6 JS模块本身支持异步模块加载,因此我不需要使用CommonJS或RequireJS等附加工具?

最佳答案

it appears to me that module loading is natively supported via the import and export keywords.

不完全是.导入和导出声明仅定义每个模块的依赖关系和接口.它们允许静态提取命名所需模块的字符串,没有别的.

If this is the case, do I not need to use an additional tool like CommonJS or RequireJS?

不需要.您仍然需要为ES6模块使用加载程序,它可以解析从导入到实际模块文件的名称或路径或任何内容,并使用依赖于实现的方法加载它们.

有许多工具或工具链可用,不同解决方案的示例如下

> webpack:将所有内容捆绑成一个大脚本
> System.js:动态和异步加载单个模块(类似于require.js所做的)
> native:node.js和web浏览器仍在计算如何在没有附加库的情况下支持模块加载
> babel transpilation:您可以将ES6模块转换为AMD或CommonJS格式,并使用require.js等已知工具

转载注明原文:javascript – 如果我使用ES6模块,是否还需要模块加载器? - 代码日志