对于使用 JavaScript ES6 模块和 类 的应用程序,是否仍然需要模块加载器?

Is there still a need for a module loader with applications that use JavaScript ES6 modules and classes?

如果您使用 ES6 模块和 类 编写应用程序,是否需要使用模块加载器框架,或者仅使用构建工具将所有代码连接到一个文件中是最佳做法(或文件)并包括那些使用普通脚本标签的文件?

是的。有人,在某个地方必须加载模块。

我认为您将提前编译模块与单独加载模块混为一谈。 Webpack 是一个模块加载器,它输出单个文件供浏览器稍后使用,而 System API 和 requirejs 等加载多个单独的文件。

两方面都有性能因素,特别是更长的构建时间(预编译时)与更长的加载时间(多个文件)。

Webpack、Browserify 和大多数其他模块加载器(System API 除外)允许您为某些文件类型定义一些加载器并自动编译您的 (S)CSS 或模板,以及 运行 其他工具来丑化或混淆您的代码。 ES6 System API 不提供这些功能,但它是比大多数运行时加载器更强大的。

这归结为两个权衡:

  1. 支持非 JS 模块(样式、模板)与构建时间
  2. 单个请求和更长的构建与多个请求和 short/no 构建

为您的用户(高带宽与移动)、环境(如果您有两打 CI 代理,谁在乎构建是否需要额外的 3 秒?)和堆栈(如果您有很多模板文件,编译它们 AOT 可能很重要)。