Express框架
是NodeJS的框架:封装了http模块,并对http进行了扩展,简化了基于NodeJS在Web服务器端的开发。可以方便的获取请求参数和进行路由处理。
1.安装
项目初始化:npm init
安装express模块:npm install express
查看express版本号:npm list express
2.创建Web服务器的步骤
(1)引入express模块
(2)调用express()方法创建服务器对象
(3)定义路由
(4)启动监听:调用listen()方法
//1.引入express对象
const express = require("express");
//2.创建Web服务器对象
const app = express();
//3.创建get路由:接受客户端的get请求
app.get("/",(req,res)=>{
res.end("Hello Express");
})
app.get("/list",(req,res)=>{
res.end("Hello ListPage");
})
//4.启动监听
app.listen(3000);
console.log("服务器运行在3000端口");
3.Express中间件
Express中间件(Middleware):是指业务流程的中间处理环节。可以把中间件理解为处理客户端请求的一系列方法。
(1)组成:
A、中间件方法:由Express提供用来拦截用户请求
B、请求处理函数:由开发人员编写,负责处理客户端的请求
(2)常用的中间件方法:
app.get("请求路径","请求处理函数"):拦截get方式的请求
app.post("请求路径","请求处理函数"):拦截post方式的请求
app.use("请求路径","请求处理函数"):调用其他的模块
(3)利用中间件处理静态资源
使用static()中间件,在客户端访问服务器端的静态资源时使用
express.static():是express内置的中间件,参数是静态资源所在的目录,要作为app.use的参数来使用
常用的静态资源:图像、html、css文件、JavaScript文件
(4)利用中间件处理错误
const express = require("express");
const fs = require("fs");
const app = express();
app.get("/readfile",(req,res,next)=>{
fs.readFile("./a/txt","utf-8",(err,result)=>{
if(err != null){ //若读文件错误,则调用下一个中间件并将错误传过去
next(err)
}else{
res.send(result);
}
})
})
app.use((err,req,res,next)=>{
res.status(500).send(err.message);
})
app.listen(3000);
console.log("服务器运行在3000端口上");
4.模块化路由
通过express.Rourer()实现路由的模块化管理
(1)创建路由对象
const route = express.Router();
route.get("请求路径","请求处理函数");
route.post("请求路径","请求处理函数");
module.exports = route;
例如:
route.get("/index",()=>{}) //二级路由,'/'表示当前路由的上一级目录
(2)在主程序最终引入路由模块
app.use("/请求路径","路由模块名");
例如:
app.use('/deyun',route); //以及路由,'/'表示的是服务器的根目录
http://localhost:3000/deyun/index
const express = require("express");
//创建路由对象
const route = express.Router();
//用路由对象实现路由
route.get("/home",(req,res)=>{
res.send('路由模块化')
})
//将路由对象导出
module.exports = route;
const express = require("express");
//导入路由文件
const route = require("./route/home")
const app = express();
//应用路由
app.use("/deyun",route);
app.listen(3000);
console.log("服务器运行在3000端口上");
5.Express接受请求参数
(1)接收get请求的参数
使用req.query.参数名来获取
(2)接收post请求的参数
使用body-parser模块
(3)接受路由参数
接收路由参数:在定义路由时,可以在请求路径上进行参数传递