有没有一种方法可以在不使用全局变量的情况下自动将模块导入到每个文件中?在 Webpack 中,我可以使用 ProvidePlugin,它会自动将
import util from './util.js'
注入到引用 util
的每个文件中。
例如
plugins: [
new webpack.ProvidePlugin({
'util': './util.js',
})
],
我的目标是避免必须为常用实用程序或配置模块添加
import
定义行的痛苦。
谢谢
当你在前端世界中使用类似
ProvidePlugin
的东西时,从语义和可用性的角度来看,你的所有意图和目的都是提供一个全局的。它几乎具有使用全局确实的所有缺点。从全球代码质量的角度来看,您几乎没有获得任何好处。
如果您需要/想要一个全局变量,请使用一个。如果您真的想要这个,那么这就是解决这个问题的一流语言支持。
Youn 可能会使用自定义节点 ESM 加载器来实现它,但如上所述,这是模仿全局语义。您还可以开始使用 babel 之类的东西编译 JS 代码。在后端,就像用大锤敲开坚果一样。
也就是说,我会建议完全反对这种思维方式(抱歉,如果这听起来像是扫兴的派对!)。消除
import
行的负担可能看起来很有吸引力,但实际上,如果我是这个代码库的新开发人员,我会想知道到底发生了什么。它打破了开发商的期望。一致性和对一致性的期望大大超过了没有该行所节省的任何费用,无论如何,该行通常都会由 IDE 自动插入。
更不用说,如果您走“注入”路线,它会对 linting 工具、IDE IntelliSense 和其他静态分析工具造成严重破坏。
它也会扰乱范围。如果另一个变量碰巧使用相同的名称,那么对于人类,尤其是对于 IDE,实际引用的内容就会变得不清楚。