.cjs
和 .js
后缀名在 Node.js 中表示不同的模块系统。主要区别在于它们分别使用 CommonJS 和 ECMAScript 模块系统。下面是它们的主要区别:
.cjs
:这个后缀名表示使用 CommonJS 模块系统。CommonJS 是 Node.js 最早采用的模块系统,它支持require()
函数来导入其他模块,使用module.exports
来导出模块。这种模块系统在 Node.js 的历史中非常重要,许多旧的 Node.js 项目和 npm 包都使用 CommonJS。
示例:
// 导入模块
const fs = require('fs');// 导出模块
module.exports = {myFunction: function() {// ...}
};
.js
:这个后缀名表示使用 ECMAScript 模块系统。ECMAScript 模块是 JavaScript 语言标准的模块系统。在 Node.js 之外的 JavaScript 环境(如浏览器)中,通常使用这种模块系统。在 Node.js v12.17.0 及更高版本中,可以通过设置package.json
的type
字段为module
来启用 ECMAScript 模块。ECMAScript 模块使用import
和export
关键字来导入和导出模块。
示例:
// 导入模块
import fs from 'fs';// 导出模块
export function myFunction() {// ...
}
总结:.cjs
后缀名表示使用 CommonJS 模块系统,而 .js
后缀名表示使用 ECMAScript 模块系统。这两种模块系统在语法和功能上有一些区别,但它们都可以在 Node.js 中使用。在实际开发中,你可以根据项目需求和团队习惯选择合适的模块系统。