npm概述
- npm(node package manager)翻译过来就是node包管理器
- 包(package)是某个独立功能的封装,包是在模块基础上更深一步的抽象。
- 简单理解:一个包中可以包含一组功能相近的模块
- 再简单的理解,包就是node的插件,下载安装好就可以配合node使用了
- npm就是安装、卸载包的管理工具
- npm不用单独安装,安装完node,npm默认就安装好了
使用npm安装Node包
安装一个包,分为全局安装和本地安装
- 全局安装
- 需要通过命令行执行的包,一般安装在全局目录中,方便随时使用命令行工具运行
- 安装步骤
- 随便一个位置,运行命令行工具
- 执行 npm install 包名 -g 即可安装(install可以简写为i,-g可以放到包名前面)
- 删除全局安装的包,执行 npm uninstall 包名 -g 即可删除(uninstall可以简写为un)
- 安装完成,只能通过命令行工具执行命令,不能通过require(‘包名’); 来加载包
- 本地安装
- 需要通过 require(‘包名’) 加载使用的包,要执行本地安装
- 安装步骤
- 在需要安装包的文件夹,运行命令行工具
- 执行 npm init -y 初始化。此时会生成一个package.json的文件,该文件相当于包的配置文件
- 执行命令 npm install 包名 即可安装
- 安装完成,可以在当前目录或其子目录中使用 require(‘包名’); 来加载包,使用它了
- 全局安装nodemon包
- nodemon是一个帮我们自动启动Web服务的工具
- 使用nodemon执行一个server.js文件后,当文件改变后,会自动重启服务(server.js 表示包含Web服务器功能的js文件)
- 安装:npm i nodemon -g
- 使用:执行命令 nodemon server.js 即可
使用nodemon启动服务
// 之前启动服务,每次修改代码后,都有重新启动
node server.js
// 现在,使用nodemon启动服务,之后修改代码后,nodemon会帮我们自动重启服务
nodemon server.js // server.js 表示包含Web服务器功能的js文件
express框架介绍
- Express 是一个第三方模块
- Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架。
- express保留了http模块的基本API,也就是说使用express时也能使用req和res对象
- express还额外封装了一些方法,能让我们更方便的搭建服务器
- express提供了中间件功能,其他很多强大的第三方模块都是基于express开发的
使用Express构造Web服务器
下载安装 express 模块
npm i express
//1. 加载 express 模块
const express = require('express');
//2. 创建express(Web) 服务器
const app = express();
//3. 开启服务器
app.listen(3000, () => {
console.log('express-server is running...');
})
//4. 监听浏览器请求并进行处理
//app.get(): 用来接收get请求
//app.post(): 用来接收post请求,
// post表单提交(method=post)
//如果浏览器请求的地址为 http://127.0.0.1:3000/message.html,表示以GET方式请求index接口,所以会执行下面的方法
app.get('/message.html', (req, res) => {
res.end('index-page');
})
//如果浏览器请求的地址为 http://127.0.0.1:3000/login,则会执行该方法
app.get('/login', (req, res) => {
//send方法是express封装的方法
res.end('登录页');
})
// * : 通配符,代表任意地址
app.get('*', (req, res) => {
res.end('404 not found');
})
- 使用express构造服务器也是4步流程:
① 加载express模块 const express = require('express');
② 创建express服务器 const app = express();
③ 开启express服务器 app.listen(3000, () => {})
④ 注册服务器事件 app.get(url, callback) app.post(url, callback)
- 注册服务器事件有两个方法: app.get() 和 app.post()
get方法用来接收get请求,浏览器地址栏发起的请求都是get请求
post方法用来接收post请求,接收post表单提交的请求
-
express框架封装了一些额外的API,可以让我们更方便的构造Web服务器
- 使用send方法响应数据的话,会自动设置content-type。
- 注意send不能直接响应数字,需要加引号
-
浏览器请求的每一个url地址都会由一个独立方法接收并处理,没有了 if … else if … else 这样的分支,程序结构
更加清晰 -
sendFile(文件路径); – 功能是读取文件,并将读取到的结果响应给浏览器
中间件
- express中间件是一个特殊的url地址处理函数
- 中间件是 express 的最大特色,也是最重要的一个设计
- 一个 express 应用,就是由许许多多的中间件来完成的
- 中间件函数中有四个基本参数,[err]、 req、res、next(其中err不常用)
- 中间件函数要当做 app.use(); 的参数,这样来使用
- req就是回调函数中的req对象
- res就是回调函数中的res对象
- next:当该中间件执行完成后自动进入下一个中间件