一.什么是模块化?
1.是指解决一个复杂问题时,自顶向下逐层把系统划分成若干个模块的过程.
2.编程领域中的模块化就是遵守固定的规则,把大文件拆成独立并相互依赖的多个小模块.
二.为什么要用模块化
代码模块化好处:
- 可以解决命名冲突
- 管理依赖
- 提高代码的可读性
- 代码解耦,提高代码的复用性
三.模块化的规范
1.模块化规范就是对代码进行模块化的拆分与组合时,需要遵守的那些规则,例如:
- 使用什么样的语法格式来引用模块
- 在模块中使用什么样的语法格式向外暴露成员
2.模块化规范的好处:大家都遵守同样的模块化规范写代码,降低了沟通的成本,极大方便了各个模块之间的相互调用,利人利己
3.CMD/AMD/CommonJS规范分别是指什么?
- CMD规范(Common Module Definition)是 sea.js 在推广过程中对模块定义的规范化产出。应用有sea.js.
- AMD (Asynchronous Module Definition)是 require.js 在推广过程中对模块定义的规范化产出。应用有require.js.
- CommonJS规范是在服务器端模块的规范,是同步加载的.应用有node.js.
区别:
1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。
2. CMD 推崇依赖就近,AMD 推崇依赖前置。
三.Node中的模块化
1.内置模块
内置模块是由 Node.js
官方提供的,例如 fs
、path
、http
等
2.自定义模块
用户自己创建的js文件
1.导入使用 require
方法加载模块
const test = require('./01.test')
console.log(test)
共享成员时的注意点
使用 require()
方法导入模块时,导入的结果,永远以 module.exports
指向的对象为准
2.导出
使用 module.exports
对象,将模块内的成员共享出去,供外界使用
module.exports.username = 'zs';
module.exports.sayHello = function () {
console.log('Hello!');
}
3.第三方模块
由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载
1.包
1.Node.js
中的第三方模块又叫做包
2.不同于 Node.js
中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用
2.下载
这个包管理工具随着 Node.js
的安装包一起被安装到了用户的电脑上。
可以在终端中执行 npm -v
命令,来查看自己电脑上所安装的 npm
包管理工具的版本号
3.node_modules和package-lock.json的作用
初次装包完成后,在项目文件夹下多一个叫做 node_modules
的文件夹和 package-lock.json
的配置文件,它们的作用是:
-
node_modules
文件夹用来存放所有已安装到项目中的包。require()
导入第三方包时,就是从这个目录中查找并加载包 -
package-lock.json
配置文件用来记录node_modules
目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等
4.pakage.json配置文件的作用
使用npm init -y命令 , 创建一个package.json
配置文件 , npm
规定,在项目根目录中,必须提供一个叫做 package.json
的包管理配置文件。可用来记录项目中安装了哪些包
注意:
- 上述命令只能在英文的目录下成功运行!所以,项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格
- 运行
npm install
命令安装包的时候,npm
包管理工具会自动把包的名称和版本号,记录到package.json
中
5.安装包
npm i xxx // 安装一个包
npm i xxx1 xxx2 // 安装多个包
npm i 包名@版本号 //安装指定的包
npm i //根据
package.json
来更新(安装/删除/更新版本号)所有的包
6.dependencies 节点的作用
package.json
文件中,有一个 dependencies
节点,专门用来记录你 使用 npm install
命令安装了哪些包
作用:
- 如果某些包只在项目开发阶段会用到,在项目上线之后不会用到,则建议把这些包记录到
devDependencies
节点中 - 与之对应的,如果某些包在开发和项目上线之后都需要用到,则建议把这些包记录到
dependencies
节点中 - 您可以使用如下的命令,将包记录到
devDependencies
节点中
7.卸载包
upm uninstall 包名
npm uninstall
命令执行成功后,会把卸载的包,自动从 package.json
的 dependencies
中移除掉
4.解决包下载慢的问题
在使用 npm
下包的时候,默认从国外的 npm 服务器进行下载,此时,网络数据的传输需要经过漫长的海底光缆,因此下包速度会很慢
解决:
-
淘宝在国内搭建了一个服务器,专门把国外官方服务器上的包同步到国内的服务器,然后在国内提供下包的服务。从而极大的提高了下包的速度
-
镜像是一种文件存储形式,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像
切换 npm
的下包镜像源
使用 nrm
切换下载包的服务器
为了更方便的切换下包的镜像源,可以安装 nrm
这个小工具,利用 nrm
提供的终端命令,可以快速查看和切换下包的镜像源
1.通过npm包管理器,将nrm安装为全局可用的工具 npm i nrm -g
2.查看所有可用的镜像源 nrm ls
3.将下包的镜像源切换为taobao镜像 nrm use taobao