【问题标题】:Do unused ES6 modules affect performance?未使用的 ES6 模块会影响性能吗?
【发布时间】:2017-11-30 18:33:45
【问题描述】:

我知道未使用的 Java/.NET 导入不会影响性能。 但我也知道require() 的实现(曾经?)只是在编译时拉取并连接整个所需的模块/文件,而import 语句是一种演变。真的不一样吗?在导入列表中忘记一个非常大的未使用的 ES6 模块会影响我的应用程序的性能吗?

【问题讨论】:

  • 这取决于您使用的构建系统。
  • 您介意详细说明一下吗?
  • 一个更大的问题是为什么你有未使用的导入以及你为什么不摆脱它们?
  • 一开始就没有未使用的导入会是一个更好的方法,一个好的 linting 编辑器会为你指出这些。
  • 我是!像发疯的!我想知道我应该多疯狂地猎杀它们。它们是相当于在我的文件中包含模块的整个 JS,还是相当于 Java 的 FQN 解析?

标签: javascript import module ecmascript-6 compilation


【解决方案1】:

是的,它肯定会影响性能,特别是如果您有未导出的代码在模块中做了一些不重要的事情,或者该模块导入了其他模块。第一次导入模块时,它会被执行一次(并且只执行一次)。根据规范:

http://www.ecma-international.org/ecma-262/6.0/#sec-abstract-module-records

如果此模块已被评估,则不执行任何操作。除此以外, 传递地评估该模块的所有模块依赖关系,然后 评估这个模块

【讨论】:

  • 不确定我是否理解正确 - 听起来未使用的模块对性能没有影响前提是您将其导入并在任何其他模块中使用,因为无论如何都需要对其进行评估,但它无论导入数量如何,都不会被多次评估?
  • 例如,您可以让模块在评估时构建缓存或启动后台进程。大多数时候,类只是被导出,但你永远不知道其他人是如何设计模块的
猜你喜欢
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多