Node两种模块规范:CJS 与 ESM
(图片来源网络,侵删)
Node.js 提供了两种模块系统:CommonJS(CJS)和 ECMAScript 模块(ESM),这两种模块规范在语法、加载方式和使用场景上有一些不同。
CommonJS(CJS)
CommonJS 是一种服务器端模块的规范,被广泛用于 Node.js,它的主要特性如下:
使用 require
函数来导入模块。
使用 module.exports
或 exports
来导出模块。
模块加载是同步的,即阻塞式的。
适用于 Node.js 环境。
下面是一个简单的 CJS 示例:
// 导入模块 const math = require('mathmodule'); // 使用模块 console.log(math.add(1, 2));
ECMAScript 模块(ESM)
ECMAScript 模块是一种新的 JavaScript 模块系统,遵循 ES6 标准,它的主要特性如下:
使用 import
语句来导入模块。
使用 export
语句来导出模块。
支持异步加载,即非阻塞式的。
适用于现代浏览器和 Node.js 环境。
下面是一个简单的 ESM 示例:
// 导入模块 import { add } from './mathmodule.js'; // 使用模块 console.log(add(1, 2));
CJS 与 ESM 的不同点
下面是一个表格,归纳了 CJS 和 ESM 之间的主要区别:
特性 | CommonJS(CJS) | ECMAScript 模块(ESM) |
导入方式 | require 函数 |
import 语句 |
导出方式 | module.exports 或 exports |
export 语句 |
加载方式 | 同步(阻塞式) | 异步(非阻塞式) |
使用场景 | 主要用于 Node.js 环境 | 适用于现代浏览器和 Node.js 环境 |
代码示例 | const math = require('mathmodule'); |
import { add } from './mathmodule.js'; |
上文归纳
CommonJS(CJS)和 ECMAScript 模块(ESM)是 Node.js 提供的两种不同的模块系统,CJS 适用于 Node.js 环境,而 ESM 更适用于现代浏览器和 Node.js 环境,在选择使用哪种模块规范时,需要根据项目的需求和目标环境来决定。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)