express的概念
express是基于NodeJS平台,快速、开放、极简的Web开发框架
express的安装
- 首先建一个文件夹
- 然后在这个文件夹中进行使用npm init 命令初始化一个package.json文件
- 然后使用命令:cnpm install express --save安装express
express的使用
- 新建一个index.js文件
- 引入express依赖:const express=require(“express”);
- 创建express实例以及创建服务器
- const app=express()
- 绑定端口号
- app.listen(3000,()=>console.log(“连接成功”));
//引入express依赖
const express = require('express')
//创建express实例以及创建服务器
const app = express();
//当访问根路径时,使用res.send()发送一条信息
app.get("/",(req,res)=>{
res.send("Hello World");
})
//绑定端口号
app.listen(3000, () => console.log('Example app listening on port 3000!'))
express中的中间件
express允许我们使用多个中间件,必须要通过next来进行通知,通知下一个中间件的使用。
中间件的概念
- 请求(req)和回复(res)之间的一个应用
使用中间件
- app.use():使用中间件
- 参数1:路径,选填
- 参数2:中间件,一个函数
- 这个函数有3个形参
- req:请求
- res:回复
- next:
- next
中间件的分类
- 内置中间件
- 将用户通过get请求传递到服务端的数据经过处理挂载到req.query身上
- 自定义中间件
- 第三方中间件
- 使用require引入body-parser
- body-parser:将用户通过post请求传递到服务端的数据经过处理挂载到req.body身上
- 路由中间件
- 报错中间件
- …
路由中间件
- 创建路由
const express=require("express");
const router=express.Router();
- 使用路由
- var indexRouter = require(’./routes/index’);
app.use("/",indexRouter);//当访问根路径时寻找indexRouter路由
express中的request属性
- req.body:post请求的参数挂载在req.body身上
- 需要引入body-parser
- req.query:get请求的参数挂载req.query身上
- req.cookies:cookie信息挂载在req.cookies身上,如果没有cookie默认为空
- 需要引入cookie-parser
- req.params:映射路由的的参数
- 例如有一个路由:/user/:name,可以通过req.params.name获取到这个name,如果没有默认为空
- req.path:包含request url的一部分
- req.protocol:包含request protocol字符串
- req.signedCookies:
- 在使用cookie解析器中间件时,此属性包含请求发送的已签名cookie、未签名的已准备使用的已签名cookie。已签名的cookie驻留在不同的对象中,以显示开发人员的意图;否则,可能对req进行恶意攻击。cookie值(很容易被欺骗)。注意,对cookie进行签名并不会使其“隐藏”或加密;但只是防止篡改(因为用于签名的秘密是私有的)
express中的request的方法
- req.get():返回指定的HTTP请求头字段
- req.param():返回当前参数的值
express中的response的方法
- res.end():用于在没有任何数据的情况下快速结束响应
- res.get():返回指定HTTP响应头
- res.get(“Content-Type”);//text/plain
- res.json():发送一个json格式的响应
- res.render():在服务端渲染一个页面,并把渲染好的页面发送给客户端
- 参数1:是渲染的页面的文件名
- 参数2:是一个对象,里面是需要渲染的数据
- 服务端渲染的不是HTML文件而是ejs文件6
- res.send():发送HTTP响应
- 参数可以是一个Buffer对象,也可以是一个字符串,也可以是一个数组
- res.set():设置HTTP响应头
- res.set(“content-type”,“text/plain”)
- res.status():设置HTTP响应状态
- res.type():Sets the
Content-Type
HTTP header
- res.type(“html”)
- res.type(“json”)
express生成器
,命令:express -e