诞生背景
JS没有模块系统、标准库较少、缺少包管理工具;
前端端没有模块化编程还能够,由于前端逻辑没那么复杂,能够工做下去,在服务器端逻辑性那么强必需要有模块
为了让JS能够在任何地方运行,以达到Java、C#、PHP这些后台语言具有开发大型应用的能力,因而CommomJs规范就孕育而生了
前端
核心规范
一个文件就是一个模块,拥有单独的做用域
普通方式定义的变量、函数、对象都属于该模块内
经过require同步来加载模块,即读取并执行一个JS文件,而后返回该模块的exports对象,若是没有发现指定模块会报错
经过exports和modul.exports来暴露模块中的内容java
实例演示
node
app.js编程
/** *模块: *功能:入口 */ var tools=require('./tools');var num1=2; var num2=3; tools.add(num1,num2);
tools.js
注意嘎,这里虽然没有显示define关键字声明模块,但实际上是有的,只不过是node隐式的给包装加上了,你看不到而已。node给每一个文件都加上了,因此node规定一个文件就是一个模块,如下都是这样服务器
var log=require('./log'); module.exports = { add:function (x,y) { var sum= x+y; log.info('tools>add执行结果为:'+sum); return sum; } }
log.jsapp
module.exports = { info:function (str) { console.log(str) }, err:function (str) { console.error(str) } }
做者总结
一个文件即一个模块,经过module.export来公开模块内的成员,别的地方经过require来导入该模块。
一个模块就至关于java的一个packge模块化