CommonJS
js在浏览器端业务简单,没有模块化,也可以开发。为了js不仅仅运行到浏览器,还可以在所有的宿主环境都可以用,比如服务端,诞生了CommonJS。
CommonJS是为了js的模块化开发规范而制定。
在CommonJS中,一个文件就是一个模块,每一个模块都是一个单独的作用域,在该模块内部定义的变量,无法被其他模块获取修改,定义为global对象的属性除外,该模块通过export或者module.exports来导出模块,其它模块通过require方法来引入使用
模块的输出通过modue.exports对象来输出
exports对象用于导出当前模块的方法或变量,唯一的导出口
module对象就代表模块本身。
- module标志模块
- exports导出模块
- require引用模块
2009年,node诞生,js从而用于服务端。
服务端开发,因为有文件系统,操作系统等交互,如果没有模块化,没法编程。
node的开发就是遵循于CommonJS规范来开发
npm是node的包管理器,也是遵循CommonJS规范来开发
math.js
function add(a,b){
return a + b;
}
module.exports = {
add:add
}
require():加载模块
例子:
var math = require("./math");
math.add(1,2) //3
服务端开发都是相当于本地操作,可以用同步加载(synchronous)
浏览器端模块开发需要网络请求,不可以使用同步加载,只能异步加载(asynchronous)
定义模块:
math.js
导出模块:math.js
exports.add = function(){...}
引入模块:use.js
var add = require("./math").add
使用模块:use.js
add()