nodejs 模块化开发
1. 模块的了解
1.1 什么是模块
模块: 一个具有特定功能的文件就是一个模块.
- 模块化的优点: 有了模块,我们就可以非常方便使用这些模块,因为这些模块肯定是完成了某些特定的功能.当我们需要修改某个功能时,那么只需要修改这个功能自己的模块文件即可,每个功能模块相互独立,互不影响.
- 模块与模块之间是相互独立的,如果需要在一个模块中使用另一个模块中的值,那么就必须在这个模块中引入另一个模块,在另一个模块中导出这些值.
1.2 什么是模块化
模块化: 将一个复杂的程序根据一定的规范,封装成几个模块(文件),并进行组合在一起,每个模块的内部数据实现私有,只是向外部暴露一些接口和方法与外部模块进行通信
2. 模块的分类
2.1 模块的分类
- 系统模块:Node.jsa开发 团队已经开发了很多功能模块 直接引入就可以使用
- 第三方模块:第三方模块必须要先安装在使用,要是用包管理工具npm进行安装
- 自定义模块: 自己写的js文件,在使用模块化语法之后就是一个自定义模块了
2.2 内置模块
node.js中内置了很多模块,可以直接使用require来引用,
// 文件操作模块
const fs = require('fs')
内置模块的引用是没有路径的
2.3 自定义模块
自己写的js文件就可以是一个自定义模块
定义模块a
let str = 'hello world';
console,log(str)
exports.str = str
定义模块b 并在引入模块a
let a = require('./a.js');
console.log(a.str)
此时我们运行node b.js 执行文件
此时我们发现打印了两个hello world 我们得出以下结论,require()那个文件,就会指行哪个文件,我们执行b.js文件 由于在b中引入了a模块,所以a模块也会被触发执行
拓展:
- 会发现require() 引入谁 就会执行谁 回让a.js也执行
- require() 引入模块如果有异步语句,不会阻止代码执行,会吧所有的同步执行完毕之后在执行异步语句
- 如果是多层引用会把引入文件执行完毕在执行其他
- 如果循环引用 a引用b b引用a nade会很智能的组织好第二次引入
在后续的文章中会详细说到模块化开发的相关知识点…