Express框架
是Node.js官方推荐的唯一一个Web开发框架。
- 静态文件服务
- 路由控制
- 模版解析支持
- 动态视图
- 用户会话
- 错误控制器
- 插件支持
官网:http://www.expressjs.com.cn
express是一个基于内置核心http模块的,一个第三方的包,专注于web服务器的构建。
1//Express不是内置模块需要下载
2
3// 1. 引入express模块
4const express = require('express');
5
6// 2. 创建应用
7const app = express();
8
9// 3. 设置静态资源路径
10app.use(express.static('node_modules'));
11
12// 4. 设置模版引擎
13//ejs需要安装,ejs直接书写业务逻辑,注意注意:不能写注释,写注释直接报错
14app.set('view engine','ejs');
15
16// 5. 设置视图路径
17app.set('views','./views');
18
19// 6. 设置路由
20app.get|post('/',(req,res)=>{
21 console.log(req);
22 res.send('hello world!')
23 //加载视图:将第二个参数的变量data传递给当前的index.ejs
24 res.render('index',{变量:数组对象})
25 res.end();
26})
27
28// 7. 设置监听端口
29app.listen(3000,()=>{
30 console.log('服务器在3000端口启动')
31})
路由基础
1const express = require("express");
2
3const app = express();
4
5// 在根路由响应get请求
6app.get("/", (req, res) => {
7 res.send("Hello World");
8});
9
10// 在根路由响应post请求
11app.post("/", (req, res) => {
12 res.send("Got a Post request");
13});
14
15// 响应对/user路径的put请求
16app.put("/user", (req, res) => {
17 res.send("Got a Put request at /user");
18});
19
20// 响应对/user路径的delete请求
21app.delete("/user", (req, res) => {
22 res.send("Got a Delete request at /user");
23});
24
25
26app.listen(3000, () => {
27 console.log("Server Running at http://localhost:3000/");
28});
请求与响应
Express应用使用路由回调函数的参数:request
和 response
对象来处理请求和响应的数据。
Express不对node.js已有的特性进行二次抽象,只是在它之上扩展了web应用所需的基本功能
- 内部使用的还是http模块
- 请求对象继承自
http.IncomingMessage
- 响应对象继承自
http.ServerResponse
1app.get("/", (req, res) => {
2 res.send("Hello World");
3});
请求
req对象代表HTTP请求,并具有请求查询字符串,参数,正文,HTTP标头等的属性
1app.get("/", (req, res) => {
2 console.log("请求路径:", req.url);
3 console.log("请求方式:", req.method);
4 console.log("请求头:", req.headers);
5 console.log("请求参数:", req.query);
6 res.send("Hello World");
7});
响应
res
Express中间件
body-parser:解析HTTP请求体
compression:压缩HTTP响应
cookie-parser:解析cookie数据
cors:处理跨域资源请求
morgan:HTTP请求日志记录