《Vite 基础知识》关于 .mjs .cjs 文件引出 NodeJS 对JS模块加载的思考(CommonJS 和 ESM)
在 Node.js 中,有两种模块系统:CommonJS 和 ES Modules。.cjs
和 .mjs
分别是这两种模块系统的文件扩展名。
.cjs
文件使用 CommonJS 模块系统,该系统使用 require()
函数来导入模块。
.mjs
文件使用 ES Modules 系统,该系统使用 import
和 export
语句来导入和导出模块。
在 Node.js 中,默认情况下,如果文件扩展名为 .mjs
,则该文件将使用 ES Modules,如果文件扩展名为 .cjs
,则该文件将使用 CommonJS。
如果你想在 .cjs
文件中使用 ES Modules,或者在 .mjs
文件中使用 CommonJS,你可以在文件顶部添加特殊的注释行:
在 .cjs
文件中使用 ES Modules:
// @type {module}
在 .mjs
文件中使用 CommonJS:
// @type {commonjs}
这些注释行指示 Node.js 如何解析文件。
在实际开发中,通常推荐使用一致的模块系统。即在项目中要么全部使用 .mjs
文件和 ES Modules,要么全部使用 .cjs
文件和 CommonJS。这可以避免各种兼容性问题。
评论已关闭