为什么要在ES6模块上使用模块绑定器

Why to use module bundlers over ES6 module?

本文关键字:模块 绑定 ES6 为什么      更新时间:2023-09-26

简单而又愚蠢的问题。在ES6中我们不是已经有模块了吗?但是我们再次使用模块捆绑器。都是因为支持问题吗?他们给了我们更多的选择还是什么?
谢谢。

当前JS运行时不支持ES6模块。这似乎令人困惑,因为它们在规范中,但它们只是被定义而尚未实现(Edge是唯一支持任何支持的浏览器,根据MDN)。

因为我们有这个花哨的新语法,但没有浏览器(或节点)的支持,一些工具需要填充现在。进入像webpack这样的打包器,他们了解ES6模块,并提供自己的System实现及其导入功能。

这与lodash(和underscore)在函数数组方法被大多数浏览器实现之前所做的没有什么不同,只是在填充发生的时候有所不同。因为模块加载必须在脚本运行之前进行,所以打包器必须在脚本到达客户端之前运行。