模块介绍
在大型项目中,我们往往会根据需求和功能,将程序拆分为不同的模块。一方面有利于多人协作开发,提高开发效率。另一方面,清晰明确的架构也有利于提升程序的可维护性。
随着JavaScript程序的规模越来越大,没有模块的问题越来越明显
- 命名冲突
- 无法定义依赖,加载过多无用脚本
- 代码耦合度极高
# 为什么要有模块?
日常开发难免需要他人合作开发,按功能点划分好模块,往往能使代码更灵活,并且大大提升代码可维护性和可复用率。
- 方便多人分工合作
- 通过定义依赖,可避免加载过多无用脚本
- 减少代码耦合度
- 解决命名冲突问题
- 模块复用,减少重复造轮子
# CommonJS 模块规范
# 通过require()方法,传入模块的标识,引入模块
var http = require('http')
1
# 模块标识可以是小驼峰命名的字符串,或者是./或者../开头相对路径,或者是绝对路径
var moduleA = require('./moduleA')
1
# 每个模块存在一个module对象,代表模块本身
console.log(module)
1
# 每个模块都有独立的作用域
console.log(a) //a is undefined
1
# 通过上下文提供exports对象,用于导出当前模块的方法和变量 ,同时exports是module的一个属性
module.exports.fn = function(){}
module.exports = function(){}
1
2
2
exports
是对module.exports
的引用,直接改变这个引用的值是不会改变module.exports
的值。
上次更新: 2023/01/29, 15:40:43