express
什么是express
基于 Node.js 平台,快速、开放、极简的 Web 开发框架
地址:https://www.expressjs.com.cn/
express和http对比,js原生和jquery关系
我们可以使用express快读的搭建一个完整功能的网站
express根之前的http模块相似,都是用来创建web服务端的,区别在于:http是原生的,express是在http的基础上封装的
简单使用以下
-
安装模块
npm i express
-
引入模块
let express = require('express');
-
创建web服务
let app = express();
-
配置路由(请求方式,请求路径)
app.get('/index',(req,res)=>{ res.send('内容'); });
-
监听端口
app.listen(3000,()=>{ console.log('服务器在3000端口下启动成功'); })
路由
路由:请求方式 + 请求路径
请求方法:get(获取),post(添加),put(修改),delete(删除)
语法格式:
app.method(path,(req,res)=>{
})
// 常用的四种路由请求方式
app.get('/add',(req,res)=>{
res.send('helllo,我是添加get数据');
})
app.put('/add',(req,res)=>{
res.send('helllo,我是添加put数据');
})
app.delete('/add',(req,res)=>{
res.send('helllo,我是添加delete数据');
})
app.get('/goods',(req,res)=>{
let goods = [{
id:1,
goodsname:'T恤',
price:25
}];
res.send(goods); // 字符串
})
模块化路由
作用:能够更加方便的管理路由,一般清空下express是不建议我们将所有的路由都放在app。js文件中的,所以我们可以把同类型的路由放在一个模块中使用
实现步骤
-
单独创建一个js文件
-
导入express模块,并且使用express下面的express.Router()
-
所有的路由挂载到express.Router()路由模块身上
-
导出路由对象
-
在app.js中使用需要引入 require
-
app.use()使用路由
创建路由模块
// student.js 路由文件 let express = require('express'); let stu = express.Router(); stu.get('/stu/add',(req,res)=>{res.send('添加学生信息');}) stu.get('/stu/update',(req,res)=>{res.send('修改学生信息');}) stu.get('/stu/del',(req,res)=>{res.send('删除学生信息');}) stu.get('/stu/show',(req,res)=>{res.send('查询学生信息');}) // 导出 module.exports = stu;
使用路由模块
let app = express(); app.use(student); // 简写形式 app.use(require('./teacher'));
获取路由参数
get参数
req.query 直接获取get的参数值
返回:对象‘
app.get('/stu/show',(req,res)=>{
let stu = [{
id:1,
name:'jack',
clss:'web前端'
},{
id:2,
name:'Rose',
clss:'web前端'
},{
id:3,
name:'张三',
clss:'web前端'
},{
id:4,
name:'李四',
clss:'web前端'
}];
/* 接收get的参数:query
返回的数据格式为对象 query.id
*/
/*
分页效果:第几页 , 显示的数量
1 0,3
2 3,6
3 6,9
(page-1)*3,page*3
*/
// console.log(req.query.page);
let {page} = req.query;
res.send(stu.slice((page-1)*3,page*3));
})
post参数
req.body 获取post的参数值
返回:对象
注意:添加配置信息
配置信息:app.use(express.urlencoded({extended:false}));
注意:配置信息一定要放在路由的前面
// post配置信息
app.use(express.urlencoded({extended:false}));
app.post('/stu/show',(req,res)=>{
// 获取post的参数:body
let {name,sex} = req.body; // post的参数
res.send(`show学生信息${name},${sex}`);
})
动态路由参数
动态路由使用req.params获取值
app.get('/article/:name/:id',(req,res)=>{
res.send(req.params);
}