commonJS规范

1.commonJS规范内容
每一个文件就是一个模块,都有自己独立的作用域、变量、方法等,对其他的模块都不可见。
commonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的
exports属性(即module.exports)是对外的接口。
加载某个模块,其实就是加载该模块的module.exports属性。require方法用于加载模块
加载方式:同步。exports是导出,require是导入。(使用权限肯定就是闭包)
需要用node **.js 命令运行。

2.commonJS特点
所有代码都运行在模块作用域,不会污染全局作用域。
模块可以多次加载,但只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就会直接读取缓存的结果。要想再次运行,必须清除缓存。
模块加载的顺序,是按照其在代码中出现的顺序。
模块输出的值,是值的拷贝:从而控制了数据的访问权限。

3.require的内部处理流程
require命令是commonJS规范之中,用来加载其他模块的命令。它其实不是一个全局命令,而是指向当前模块的module.require命令,而后者又调用node的内部命令module._load。

Module._load = function(request, parent, isMain) {
1.检查Module._cache,是否缓存之中有指定模块
2.如果缓存之中没有,则创建一个新的Module实例
3.将它保存到缓存中去
4.使用Module.load() 加载指定的模块文件,读取文件内容之后,使用module.compile() 执行文件代码
5.如果加载解析过程中报错,就从缓存中删除该模块
6.返回该模块的module.exprots
}

一旦require函数准备完毕,整个所要加载的脚本内容,就被放到一个新的函数之中,这样可以避免污染全局环境。该函数的参数包括require、module、exports,以及其他一些参数。

(function(exports, require, module, _filename, _dirname) {
// 代码导入在这里
})()

4.在浏览器中直接使用commonJS(browserify介绍)
npm install broswerify
broswerify inputPath.js -o outputPath.js
官网:https://broswerify.org/

你可能感兴趣的:(commonJS规范)