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应用使用路由回调函数的参数:requestresponse 对象来处理请求和响应的数据。

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请求日志记录