文章目录
前言
本文包含 Express框架 基本内容,参考于黑马教学视频通过自己理解整理,所以这是一篇用于小白新手入门,或者复习使用的笔记, 从最基础带你认识Express基本内容, 到可以独立封装自己的接口
如有做的不好的地方,敬请谅解,欢迎指出,持续更新改正
一 初始 Express
1 Express简介
1.1 什么是Express
官方: Express是基于Node.js平台,快速,开放,极简的Web开发框架
通俗理解: Express的作用和Node.js内置的http模块类似,专门用来创建Web服务器的
本质: 就是一个npm上的第三方包(基于http模块封装),提供了快速创建Web服务器的便捷方法
链接: Express中文官网
1.2 Express能做什么
前端最常见的两种服务器
- Web网站服务器: 专门对外提供Web网页资源的服务器
- API接口服务器: 专门为外提供API接口的服务器
使用Express,可以方便,快速创建Web网站的服务器或API接口服务器
2 Express的基本用法
2.1 安装
执行终端命令
npm i express@4.17.1
2.2 创建基本的Web服务器
// 1 导入express
const express = require('express')
// 2 创建web服务器
const app = express()
// 3 调用app.listen(端口号, 回调函数) 启动服务器
app.listen(80, ()=>{
console.log('express server running at http://127.0.0.1');
})
2.3 监听 GET 与 POST 请求
app.get() 和 app.post()
//参数1:客户端请求的URL地址
//参数2:请求对应的处理函数 req:请求对象 res:响应对象
app.get('请求URL', function(req, res) {
处理函数}
//参数1:客户端请求的URL地址
//参数2:请求对应的处理函数 req:请求对象 res:响应对象
app.post('请求URL', function(req, res) {
处理函数}
2.4 把内容响应给客户端
res.send() 方法
// 1 导入express
const express = require('express')
// 2 创建web服务器
const app = express()
// 4 监听客户端的GET和POST请求, 并向客户端响应内容
app.get('/user', function(req, res){
// 调用 res.send() 方法, 向客户端响应一个对象
res.send({
name: 'zt', age: 20})
})
app.post('/user', function(req, res){
// 调用 res.send() 方法, 向客户端响应一个文本
res.send('请求成功')
})
// 3 调用app.listen(端口号, 回调函数) 启动服务器
app.listen(80, ()=>{
console.log('express server running at http://127.0.0.1');
})
2.5 获取 URL 中携带的查询对象
req.query
在请求时, 将查询字符串写到url后面, req.query 就能获取到
app.get('/', function(req, res){
// 通过req.query 可以获取到客户端发送过来的 查询参数, 默认情况下是空对象
res.send(req.query)
})
2.6 获取 URL 中的动态参数
req.params对象
可以访问到 URL 中, 通过 : 匹配到的动态参数
app.get('/user/:id', function(req, res){
// req.params 存放通过动态匹配过来的参数值, 默认是一个空对象
res.send(req.params)
})
假如 url 是user/1, 响应值如下
{
"id": "1"
}
注意
- 冒号后名称不固定, 合理合法就行
- 可以有多个动态参数
3 托管静态资源 (外界可以访问自己服务器资源)
3.1 托管一个目录 (express.static() 方法)
express.static() 方法, 非常方便地创建一个静态资源服务器
app.use(express.static('目录'))
注意: Express 在指定静态目录查找文件, 并对外提供资源访问路径, 因此, 存放静态文件的目录名不会出现在 URL 中
const express = require('express')
const app = express()
// 调用express.static(目录) 方法, 提供对外静态资源
app.use(express.static('./code'))
app.listen(80, ()=>{
console.log('express server running at http://127.0.0.1');
})
3.2 托管多个静态资源目录
只需多次调用 express.static() 函数
app.use(express.static('目录1'))
app.use(express.static('目录2'))
注意: 访问静态资源文件时, 会根据目录添加顺序查找
3.3 挂载路径前缀
可以通过如下方法, 为静态资源路径添加一个路径
qpp.use('前缀路径', express.static('目录'))
这样访问静态资源目录前必须加入 前缀路径
4 nodemon 工具
安装后, 当项目代码被修改, 就能够监听项目文件的变动, 修改后, 自动重启项目
npm i -g nodemon
以后不要node 启动项目, 直接用nodemon 启动
nodemon app.js
二 Express 路由
1 路由的概念
1.1 什么是路由
广义上说, 路由就是 映射关系
1.2 Express 中的路由
Express中, 路由是 客户端的请求 与 服务器处理函数 之间的映射关系
由三部分组成:
- 请求类型
- 请求的 URL 地址
- 处理函数
app.类型(URL地址, 处理函数)
1.3 Express 中路由的例子
app.get('/user:id', function(req, res){
res.send(req.params)
})
app.post('/user', function(req, res){
res.send('请求成功')
})
1.4 路由的匹配过程
一个请求到达服务器后, 需要先经过路由的匹配, 只有成功后, 才会调用对应的处理函数
匹配时, 会按照路由顺序匹配, 如果请求类型 和 请求URL同时匹配成功, 则会交给处理函数处理
注意:
- 按照定义的先后顺序进行匹配
- 请求类型和请求URL同时匹配成功, 才会调用对应的处理函数
2 路由的使用
2.1 最简单用法
最简单的用法就是最简单的 app.get() 和 app.post() 方法 把路由挂载在app上
app.get('/', function(req, res){
res.send('Hello World')
})
app.post('/', function(req, res){
res.send('Post Requset')
})
实际上用的不多, 因为代码体积太大
2.2 模块化路由
为了方便对路由进行模块化的管理, Express不建议将路由直接挂载到app上, 而是将路由抽离为单独的模块
步骤如下
- 创建路由模块(自定义模块)对应的 .js 文件
- 调用 express.Router() 函数创建路由对象
- 向路由对象上挂载具体路由
- 使用 module.exports 向外共享路由对象
- 使用 app.use() 函数注册路由模块
2.3 创建路由模块
// 1 导入 express
const express = require('express')
// 2 创建路由对象
const router = express.Router()
// 3 挂载具体的路由
router.get('/user/list', (req,res) =>{
res.send(