模块化的优点
- 解决命名冲突问题
- 通过定义依赖可避免加载无用脚本
- 减少代码耦合度
- 方便多人分工合作
- 模块复用,减少重复造轮子
commonjs 特点
1.通过require()
方法,传入模块的标识,引入模块
2.模块标识可以是小驼峰命名的字符串
或者的./
、../
开头的相对路径或绝对路径
3.每个模块存在一个module
对象,代表模块本身
4.每个模块都有独立的作用域(文件即模块)
5.通过上下文提供exports
对象用于导出当前模块的方法和变量,同时exports
是module
的一个属性(可使用module.exports=..
、module.exports.a=..
、exports.a=..
这3种写法,不能用exports=..
这种写法)
如以下示例:
// 1.通过require来引入模块
// 2.模块标识符可以是小驼峰的字符串或者是相对或绝对路径
var http = require('http')
var moduleA = require('./moduleA')
// 3.每个模块存在一个module对象,代表模块本身
console.log(module)
// 4.每个模块都有独立的作用域(文件即模块)
console.log(a) // a is undefined
// 5.通过module.exports向外暴露对象或接口
module.exports.a = 1
module.exports.b = 2
// console.log(module.exports) => { a: 1, b: 2 }
module.exports={ a: 1, b: 2 }
// console.log(module.exports) => { a: 1, b: 2 }
module.exports=1
// console.log(module.exports) => 1
exports.a = 1
exports.b = 2
// console.log(module.exports) => { a: 1, b: 2 }
// 上面用法均正确,以下用法错误
exports = {a:1,b:2}
// console.log(module.exports) => {}
网友评论