
1.3
模块化设计的好处
|
11
撰写本章时,这个特性在大多数环境中还没有实现,但是很显然
Node.js
会
在未来支持它
1
。
在
Node.js v8.5.0
中,对
ESM
的支持是在一个
--experimental-modules
标
识后面引入的,前提是我们的模块使用
.mjs
作为文件扩展名。大部分现代
浏览器已经支持
ESM
,因此无须使用标识。
作为
Browserify
的接班人,
Webpack
在很大程度上承担了通用模块打包
器的角色,这归功于其具备的大量新特性。与
Babel
和
ES6
的情况一样,
Webpack
一直通过它的
import
和
export
静态声明语句,以及类似
import()
动态函数的表达式来支持
ESM
。
Webpack
采用
ESM
带来的效益极高,这
在很大程度上要归功于它采用的“代码分割(
code-splitting
)”机制,这种
机制能够将一个应用分成不同的包,以提升首次加载时的性能
2
。
鉴于
ESM
是
JavaScript
的原生模块系统(相对于
CJS
),我预计在未来几
年内它会完全主宰模块生态系统。
1.3
模块化设计的好处
我们已经讨论了这样一个事实:模块化(而不是采用一个共享的全局作用域)
有助于避免变量名中的意外冲突,因为模块的作用域是多样化的。除了解
决冲突之外,文件之间的模块性还减少了我们在处理特定功能时必须注意
的复杂性。因此,我们的开发团队能够专注于手头的任务,工作效率更高。
由于这个原因,
可维护性
(
maintainability
)或者对代码库进行变更的能力
1
你可以阅读
Node.js
团队成员