ModuleJS
模块化简介
什么是模块化
01 将一个复杂的程序依据一定的规则拆分成单个文件,并最终组合在一起
02 这些拆分的文件就是模块,模块内部数据是私有的,只是向外部暴露一些方法与外部其它模块通信
为什么需要模块化
01 降低复杂度,提高解耦性
02 避免命名冲突
03 更好的分离,按需加载
04 更高复用性,高可维护性
模块化带来的问题
- 01 请求过多
- 02 依赖模糊
- 03 难以维护
模块化规范
- 前言:
- 一个大的项目必定会使用模块化技术,使用模块化就会使用相应的模块化规范,现在比较流行的模块化规范有以下 2 种: CommonJS、ES6
CommonJS
CommonJS 规范
02 每个文件都是一个模块。
03 CommonJS 模块化的代码既可在服务端运行,也可在浏览器端运行
04 服务器端: 模块化的代码可直接运行。
05 浏览器端: 模块化的代码要经过 Browserify (http://browserify.org)编译.
暴露语法
01
module.exports = value
02
exports.xxx = value
03 内置关系:
1 | console.log(exports === module.exports) // true node环境下 |
引入语法
- 01 引入第三方模块 :
require(xxx)
, xxx 为模块名 - 02 引入自定义模块 :
require(xxx)
, xxx 为模块文件的路径
module.exports 暴露
1 | // 使用 module.exports 暴露 |
1 | // 导入自定义模块 |
exports 暴露
1 | // 使用 exports 暴露 |
1 | // 导入自定义模块 |
引入第三方模块
1 | // 引入第三方模块 |
browserify 包的使用
- 01 browserify 的作用 : 将 commonJS 规范的代码,编译成浏览器能识别解析的代码
- 02 安装 browserify :
1 | npm install browserify -g |
- 03 执行命令将 commonJS 规范的代码进行编译:
- 会自动打包依赖
1 | browserify ./app.js -o ./build.js |
- 04 在浏览器端引入生成的 build.js 文件即可
ES6 模块化规范
ES6 模块化规范
- 01 每个文件都是一个模块。
- 02 要借助 Babel 和 Browserify 依次编译代码,才能在浏览器端运行。
- 03 Babel 中文网 : https://www.babeljs.cn/
暴露模块方式
- 01 分别暴露:
export 暴露内容
- 02 统一暴露:
export {暴露内容1,暴露内容2}
- 03 默认暴露:
export defalut 暴露内容:
引入模块方式
- 01 方法 1:
import {xxx,yyy} from '/module1'
- 02 方法 2:
import module3 from '/module3'
使用规则
- 若使用分别暴露、统一暴露的方式暴露内容,那么就要用 方法 1 引入。
- 若使用默认暴露的方式暴露内容,那么就要用 方法 2 引入。
分别暴露与导入
1 | // 分别暴露 |
1 | // 导入分别暴露模块 使用方式一导入 此处不是解构赋值,因为右边不是对象,也没有赋值操作 |
- 编译的过程如下:
仅作了解,后面脚手架会解决这繁琐的过程
1 | // 准备相关的依赖包 ES6 -> ES5 |
统一暴露与导入
1 | // 统一暴露 |
1 | // 导入统一暴露模块 使用方式一导入 此处不是解构赋值,因为右边不是对象,也没有赋值操作 |
默认暴露与导入
1 | // 默认暴露 适用于只暴露一个数据,一个模块不能有多个默认暴露,否则报错 |
1 | // 导入默认暴露模块 |
同时使用多种暴露与导入
1 | // 分别暴露 |
1 | // 导入多种暴露方式的模块 |
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自蜗牛浪迹天涯