【问题标题】:Is there still a need for a module loader with applications that use JavaScript ES6 modules and classes?是否仍然需要带有使用 JavaScript ES6 模块和类的应用程序的模块加载器?
【发布时间】:2016-07-06 15:02:20
【问题描述】:

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

【问题讨论】:

  • 一些模块加载器添加了额外的功能,例如 Dojo 的模块加载器允许您自定义模块的加载方式。
  • 使用模块加载器可以更轻松地处理图像或字体等其他资产。有时,多个文件需要一个特定的模块。在这种情况下,加载程序可以帮助安排代码,而无需三思而后行。

标签: javascript module ecmascript-6 loader es6-module-loader


【解决方案1】:

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

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

双方都有性能因素,尤其是较长的构建时间(预编译时)与较长的加载时间(使用多个文件)。

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

这归结为两个权衡:

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

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

【讨论】:

    猜你喜欢
    • 2017-03-10
    • 1970-01-01
    • 2014-10-23
    • 2016-02-28
    • 2017-10-07
    • 2018-04-12
    • 1970-01-01
    • 2016-06-07
    • 2017-12-10
    相关资源
    最近更新 更多