三、npm包管理
1、介绍
npm是NodeJs项目模块管理工具,它已经集成了nodejs安装包中(自5.2以后新增了npx
指令用于解决调用项目内部安装的模块繁琐的问题),使用npm可以实现从NPM服务器下载别人编写的第三方包到本地使用。
npm仓库地址:npm
当然除了npm以外还有Facebook贡献的Yarn,功能和npm一样,也可以作为包管理工具。
问题:npm帮我们下载和安装的包,计算机关机后再开机还是否可以继续使用?
npx
(了解)
-
为了临时帮我们去做安装操作(react)
-
更好的执行模块的内部命令
node-modules/.bin/mocha --version
# 简化成了:
npx mocha --version
2、切换npm源(可选)
源:源站、镜像源
、镜像(专门提供npm包下载资源的服务器)。
npm使用国外镜像源地址,再有的时候可能网络不是很通顺,这时可以使用国内镜像源来完成npm下载模块功能。
-
切换到阿里提供的npm镜像源(方式1)
地址:NPM镜像-NPM下载地址-NPM安装教程-阿里巴巴开源镜像站
npm install -g cnpm --registry=https://registry.npm.taobao.org
执行完毕上述命名后,在系统中提供了一个cnpm包管理工具,功能和npm一样,所不同的是cnpm镜像源地址为阿里提供的源地址。
推荐,日后工作是安装软件都使用cnpm
-
使用nrm管理npm镜像源(方式2,与方式1任选其一)
nrm 是一个 npm 源管理器,允许你快速地在 npm源间切换。npm默认情况下是使用npm官方源(npm config list 来查看),如果直接修改npm源,如果后续需要连接到官方源才能工作,这样来回切换源就变得麻烦了,nrm通过简单的命令就可以解决此问题。
# 安装 通过cnpm来安装,cnpm使用的就是国内镜像源
npm i -g nrm
# i:install
# -g:global,全局安装(后续不管在什么地方打开命令行都可以使用该命令)
注:-g表示
global
全局,让nrm不限于到某一个项目中,而是在所有的项目中都可使用
安装好nrm后可以通过nrm ls
命令来查看效果:
*
表示当前正在使用的镜像源
如果想切换成其他的镜像源,可以通过nrm use 源名称
进行切换,如需要切换成edunpm
的源,则可以执行指令:
nrm use edunpm
3、npm相关命令
# 初始化生成package.json文件(创建项目的)
npm init -y[不询问]
npm init
# 查看本项目已安装模块
npm list
# 安装模块
npm install 模块名[@版本号 可选] 或 npm i 模块名[@版本号 可选]
# 卸载已安装模块
npm uninstall 模块名
# 查看全局node_modules的地址
npm root -g
## 安装参数
##--save -S 记录生产环境所需模块 默认
##--save-dev -D 记录开发环境所需模块
##-g 安装到全局
# 生产环境:代码已经上线了的运行环境
# 开发环境:开发人员在开发的时候环境
4、自定义npm命令
目的:npm允许我们执行npm以调用三方的模块,但是由于通过npm调用三方模块的指令写起来比较长,而且可能频繁被使用,这样用起来非常麻烦,因此可以通过自定义命令对原先非常长的命令做一个简化(别名)。
通过package.json文件中的scripts自定义脚本命令:
{
"scripts": {
"test": "echo hello"
}
}
随后就可以在命令行中运行(npm run 自定义指令名称
):
npm run test
如果需要更多的自定义命令,只需要按照上述的格式进行套用即可。
后续的vue框架中就会使用到,还有webpack也会用到。
5、自动重启应用
在编写调试Node.js项目,修改代码后需要频繁的手动重启应用,非常繁琐。nodemon这个工具,它的作用是监听代码文件的变动,当代码改变之后,自动重启。
# 全局安装nodemon
npm i -g nodemon
# 执行node脚本
nodemon app.js
该工具应用非常广泛,后续的框架也是这样的应用。
四、Express
1、介绍
网址:Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网
Express 是基于 Node.js 平台,快速、开放、极简
的 Web 开发框架。搭建web服务器
Express 的本质:就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法。npm
使用Express开发框架可以非常方便、快速的创建Web网站的服务器或API接口的服务器
2、基本使用
2.1、安装
在项目目录中,打开cmd命令窗口,执行如下命令:
npm init -y # 如果没有项目则先初始化
npm i -S express
2.2、创建web服务
基本遵循之前的四个步骤:
-
导入需要使用的express包
-
创建web实例
-
定义允许访问的地址(定义路由)【重复性步骤】
-
原先的输出:res.end()
-
现在的输出:res.send()
-
-
启动服务(监听端口)
const express = require('express')
// 创建web服务
const app = express()
// 监听 get请求
// req 请求对象
// res 响应对象
app.get('请求URI',(req,res)=>{
// 向客户端响应数据
res.send({id:1,name:'张三'})
})
// ....
// 监听POST请求
app.post('请求URI',(req,res)=>{})
// 其他app.形式的api方法,put/delete/use 等
app.put()
app.delete()
// ....
// 启动服务
app.listen(8080,()=>{})
案例:手写一个服务器软件,启动后要求用户访问根“/”输出
hello world
,用户访问/html5
输出h5
,用于通过post方式访问/post则输出post
。