模块化概念
什么是模块化
就是一个JS文件中可引入另一个JS文件的数据
模块化的好处:
提高了代码的复用性
提高了代码的可维护性
可以实现按需加载
模块规范
CommonJS规范: Node.js中遵守的就是commonjs规范
ES6模块化规范: 前后端通用的模块化规范; Node.js, Vue, React 都能使用
CMD 和 AMD 模块化规范(较少使用): CMD--sea.js, AMD-require.js
UMD 叫做通用模块定义规范 (Universal Module Definition) , 它可以通过运行时或者编译时让同一个代码模块在使用Commonjs, CMD甚至是AMD的项目中运行,它没有自己专有的规范,是集结了 Commonjs,CMD, AMD的规范于一身.
模块作用域
在自定义模块定义的变量,方法等成员,只能在当前模块内被访问,外部文件是访问不到的,这种模块级别的访问限制,叫做模块作用域
模块作用域的好处
防止了全局变量污染,文件依赖等问题产生
Node.js中的模块化
模块分为三种:
内置模块
自定义模块
第三方模块
导出和导入
导出: module.exports, exports
导入:
自定义模块: const xxx = require(文件的相对位置)
内置模块: const xxx = require(模块的名字)
第三方模块: const xxx = require(模块的名字)
使用require方法加载模块
注意:
使用require()方法加载其他模块时,会执行被加载模块中的代码
使用require()方法加载用户自定义模块期间,可以省略.js后缀名
module对象
在每个.js自定义模块中都有一个module对象,里面存储了和当前模块有关的信息
module.exports作用
在自定义模块中,可以使用module.exports对象,可以将模块内的成员共享出去,供外部使用
外界用require()方法导入自定义模块时,得到的就是module.exports所指向的对象
注意:
使用require方法导入模块时,导入的结果,永远以modele.exports指向的对象为准
exports对象
为了简化向外共享成员的代码,Node提供了exports对象,默认情况下,exports和module.exports指向同一个对象,最终共享的结果还是以module.exports指向的对象为准
包
什么是包
Node.js中的第三方模块称为包
为什么需要包
包是基于内置模块封装出来的,提供了更高级,更方便的API,极大的提高了开发效率
快速创建package.json
npm init -y
注意:
上述命令只能在英文的目录下成功运行!所以,项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格
运行 npm install
命令安装包的时候,npm
包管理工具会自动把包的名称和版本号,记录到 package.json
中
package.json:用来记录项目中安装了哪些包.
dependencies作用
用来记录npm install命令安装了哪些包
//安装一个包
npm i xxx
//安装多个包
npm i xxx1 xxx2
卸载包
可以用npm uninstall命令,来卸载指定的包:
注意:
npm uninstall命令执行成功后,会把卸载的包,自动从package.json的dependencies中移掉