CommonJS规范有哪些
CommonJS规范是一种JavaScript语言的模块化规范,它定义了一种标准的API,用于组织JavaScript代码库,并提供了一种模块加载机制。该规范被广泛使用于服务器端JavaScript开发,并已成为Node.js的核心组成部分。
以下是CommonJS规范的主要特征:
1. 模块定义方式
CommonJS规范定义了一种模块定义API,使得开发者可以将代码划分为小的、相互依赖的模块。一个模块通过module.exports对象来向外暴露接口,另一个模块通过require函数来引用该模块的接口。例如:
// moduleA.js
const moduleB = require('./moduleB')
module.exports = {
hello: function(name) {
moduleB.sayHello(name)
}
}
// moduleB.js
module.exports = {
sayHello: function(name) {
console.log(Hello, ${name}!)
}
}
// main.js
const moduleA = require('./moduleA')
moduleA.hello('World')
2. 加载方式
CommonJS规范规定模块的加载方式是同步的,即模块代码在引用时会立即执行,并且代码中require语句会阻塞后面的代码执行。这种加载方式对于服务器端应用来说是非常适用的,但在浏览器端可能会因为网络请求而导致阻塞,因此现代的浏览器端JavaScript通常采用异步加载方式。
3. 常用模块 API
CommonJS规范提供了一些通用的模块API,包括module、exports、require、global等对象。其中,module对象代表当前模块,exports对象是module.exports的别名,require函数用于加载模块,global对象代表全局对象。
4. 核心模块
CommonJS规范中还定义了一些核心模块,包括assert、buffer、child_process、cluster、console、crypto、dgram、dns、events、fs、http、https、net、os、path、process、punycode、querystring、readline、stream、string_decoder、tls、tty、url、util、v8、vm和zlib等模块。这些模块提供了常用的底层API,方便开发者进行系统级别的编程。
总之,CommonJS规范为JavaScript代码库的组织和管理提供了强大的工具和标准,使得代码复用和维护更加容易。它已经被广泛应用于服务器端JavaScript开发和Node.js生态系统中,也成为了JavaScript模块化的重要历史里程碑。
