JavaScript模块化思想与CommonJS规范详解
需积分: 12 2 浏览量
更新于2024-08-05
收藏 6KB MD 举报
JS 模块化(模块化思想)
JS 模块化是指将一个复杂的程序按照一定的规则拆分成单个文件,并最终组合在一起的过程。这些拆分的文件就是模块,模块内部数据是私有的,只是向外部暴露一些方法与外部其他模块通信。
**为什么要模块化?**
1. 降低复杂度,提高解耦性:模块化可以将复杂的程序拆分成小的模块,从而降低复杂度和耦合度,提高代码的可维护性和可读性。
2. 避免命名冲突:模块化可以避免命名冲突,提高代码的可读性和可维护性。
3. 更好的分离,按需加载:模块化可以将代码分离成小的模块,按需加载,减少了代码的冗余和耦合度。
4. 更高复用性,高可维护性:模块化可以提高代码的复用性和可维护性,降低代码的维护成本。
**模块化概念带来的问题**
1. 请求过多:模块化可能会引发请求过多的问题,影响代码的性能和可维护性。
2. 依赖模糊:模块化可能会引发依赖模糊的问题,影响代码的可读性和可维护性。
3. 难以维护:模块化可能会引发难以维护的问题,影响代码的可维护性和可读性。
**CommonJS**
CommonJS 是一个双端允许的模块化规范,可以在浏览器和服务器端使用。CommonJS 模块化的代码既可在服务器端运行,也可在浏览器端运行。
**CommonJS 规范**
1. 官网:http://wiki.commonjs.org/wiki/Modules
2. 每个文件都是一个模块。
3. CommonJS 模块化的代码既可在服务端运行,也可在浏览器端运行。
4. 服务器端:模块化的代码可直接运行。
5. 浏览器端:模块化的代码要经过 Browserify 编译。
**基本语法**
1. 暴露模块:
* 第一种方式:module.exports=value
* 第二种方式:exports.xxx=value
2. 引入模块:
* 引入第三方模块:require(xxx),xxx 为模块名
* 引入自定义模块:require(xxx),xxx 为模块文件路径
3. 备注:内置关系
**暴露模块的两种方法**
1. 使用 module.exports 去暴露一个对象:
```js
// 被暴露的文件
let a = 100;
let b = 222;
// 暴露的返回值是一个对象对象的属性可以是方法
module.exports = {
showa: function showa() {
console.log(a);
},
showb: function showb() {
console.log(b)
}
}
```
2. 使用 exports.xxx 去暴露一个对象:
```js
// 被暴露的文件
let a = 100;
let b = 222;
// 暴露的返回值是一个对象对象的属性可以是方法
exports.showa = function showa() {
console.log(a);
}
exports.showb = function showb() {
console.log(b)
}
```
**结论**
JS 模块化是指将一个复杂的程序按照一定的规则拆分成单个文件,并最终组合在一起的过程。模块化可以降低复杂度,避免命名冲突,更好的分离,按需加载,提高代码的可维护性和可读性。但是,模块化也可能会引发请求过多、依赖模糊和难以维护的问题。CommonJS 是一个双端允许的模块化规范,可以在浏览器和服务器端使用。
2018-12-13 上传
2023-05-16 上传
2023-02-07 上传
2024-09-09 上传
2024-02-29 上传
2023-05-11 上传
2023-10-12 上传
2023-08-15 上传
2024-04-24 上传
![](https://profile-avatar.csdnimg.cn/77839e6f6b454c2fa3ec8fcec5c23e19_qq_45309319.jpg!1)
qq_45309319
- 粉丝: 2
- 资源: 15
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景