包
不同于node.js中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用
由于node.js的内置模块提供了一些底层的API,导致在基于内置模块进行开发时,效率很低。
包是基于内置模块封装出来的,提供了更高级、更方便的API,极大的提高了开发效率。
安装包
npm install 包名称
简写 npm i 包名称
安装指定版本的包
npm i 包名称@版本号
初次安装包
初次安装包,在项目文件下多一个叫做node_modules的文件夹和package-lock.json的配置文件
其中:
node_module文件夹用来存放所有已安装到项目中的包。require()导入第三方包时,就是从这个目录中查找并加载包
package-lock.json配置文件用来记录node_module目录下的每一个包的下载信息,例如包的名字、版本号、下载地址。
包管理配置文件
npm规定,在项目根目录,必须提供一个叫做package.json的包管理配置文件,用来记录与项目有关的一些配置信息。例如:
1)项目的名称、版本号、描述等
2)项目中都用到了哪些包
3)那些包只在开发期间会用到
4)那些包在开发和部署时都需要用到
快速创建package.json
npm init -y
不用手动添加包的信息,下载包后,包的信息会自动添加到package.json中
一次性安装所有的包
npm install
执行npm install命令时,npm包管理工具会先读取package.json中的dependencied节点,
读取到记录的所有依赖包名称和版本号之后,npm包管理工具会把这些包一次性下载到项目中
卸载包
npm uninstall
执行成功后,会把卸载的包,自动从package.json的dependencies中移除掉
devDependencies节点
如果某些包只在项目开发阶段会用到,在项目上线之后不会用到,则建议把这些包记录到devDependencies节点中
与之对应的,如果某些包在开发和项目上线之后都需要用到,则建议把这些包记录到dependencies节点中
安装指定的包,并记录到devDependencies中
npm i 包名 -D
等价于 npm install 包名 --save-dev
切换npm的下包镜像源
下包的镜像源,指的就是下包的服务器地址
//查看当前的下包镜像源
npm config get registry
//将下包的镜像源切换到淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/
//检查镜像源是否下载成功
npm config get registry
nrm
为了更方便的切换下包的镜像源
//通过npm包管理器,将nrm安装为全局可用的工具
npm i nrm -g
//查看所有可用的镜像源
nrm ls
//将下包的镜像源切换为taobao镜像
nrm use taobao
包的分类
- 项目包
那些被安装到项目的node_modules目录中的包,都是项目包
项目包又分为两类,分别是:
1)开发依赖包(被记录到devDependcies节点中的包,只会在开发期间用到)
2)核心依赖包(被记录到dependcies节点中的包,在开发期间和项目上线之后都会用到)
npm i包名 -D 开发依赖包
npm i 包名 核心依赖包
- 全局包
在执行 npm int\stall命令时,如果提供了-g参数,则会把包安装为全局包
全局包会被安装到C:\Users\用户目录\AppData\Roaming\npm\node_modules目录下
npm i 包名 -g 全局安装指定的包
npm uninstall 包名 -g 卸载全局安装的包
规范的包结构
一个规范的包,他的组成结构,必须符合以下三点要求
1)包必须以单独的目录而存在
2)包的顶级目录下必须包含package.json这个包管理配置文件
3)package.json中必须包含name,version,main这三个属性,分别代表包的名字、版本号、包的入口
i5ting_toc
i5ting_toc是一个可以把md文档转为html页面的小工具,使用步骤如下:
//将i5ting_toc安装为全局包
npm install -g i5ting_toc
//调用 i5ting_toc,轻松实现md转html的功能
express
获取URL中携带的 查询参数
通过req.query对象,可以访问客户端通过查询字符串的形式,发送到服务端的参数
app.get('/',(req,res)=>{
//req.query默认是一个空对象
//客户端使用?name=zs&age=20这种查询字符串形式,发送到服务端的参数
//可以通过req.query对象访问到,例如:
//req.query.name req.query.age
console.log(req.params)
})
获取URL中的动态参数
通过res.params对象,可以访问到URL中,通过:匹配道德动态参数
//URL地址中,可以同股票:参数名的形式,匹配动态参数值
app.get('/user/:id/:username',(req,res)=>{
//req.params默认是一个空对象
//里面存放着通过:动态匹配到的参数值
console.log(req.params)
})