1.
什么是CommonJS?
CommonJS是一种思想,它的终极目标是使应用程序开发者根据CommonJS API编写的;">为JS的表现来制定的一种规范,因为js没有模块的功能,所以CommonJS应运而生,它希望js可以在任何地方运行,不只是
浏览器
中。
CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。
NodeJS和CommonJS之间的关系
CommonJS是一种规范,NodeJS是这种规范的实现。CommonJS是一 个不断发展的规范,计划将要包括如下部分:
- Modules
- Binary
strings and buffers - Charset
encodings - Binary, buffered, and textual input and output (io) streams
- System
process arguments, environment, and streams - File system
interface - Socket
streams - Unit test
assertions, running, and reporting - Web server gateway interface,
JSGI - Local and remote
packages and package management
具体每个子规范的定制进度请查看官方网站的说明:http://commonjs.org/specs/
CommonJS有很多实现,其中不乏很多大名鼎鼎的项目,比如 说:Apache的
CouchDB和
node.js等。但这些项目大 部分只实现了CommonJS的部分规范。具体的项目和实现部分参见官方网站的说明:
http://commonjs.org/impl/
2.
CommonJS规范
CommonJS定义的模块分为:{模块引用(require)} {模块定义(exports)} {模块标识(module)}
require()用来引入外部模块;exports对象用于导出当前模块的方法或变量,唯一的导出口;module对象就代表模块本身。
- 1. 概述
- 2. module对象
- 2.1module.exports属性
- 2.2exports变量
- 3. AMD规范与CommonJS规范的兼容性
- 4. require命令
- 4.1 基本用法
- 4.2 加载规则
- 4.3
目录的加载规则 - 4.4
模块的缓存 - 4.5
环境变量NODE_PATH - 4.6
模块的循环加载 - 4.7
require.main - 5. 模块的加载机制
- 5.1
require的内部处理流程 - 6. 参考链接