node express 与next使用

886 阅读1分钟

洋葱圈next方法

const express = require("express")
const app = express();
app.use((req,res,next) => {
    console.log("aaa")
    next();
    console.log("111")
})

app.use((req,res,next) => {
    console.log("bbb")
    next();
    console.log("222")
})

app.use((req,res,next) => {
    console.log("ccc")
    next();
    console.log("333")
})

app.listen(3000, () => {
    console.log("3000端口启动")
})
输出结果
//aaa
//bbb
//ccc
//333
//222
//111

如果不调用next,后面定义的use不能被顺序调用

const express = require("express")
const app = express();
app.use((req,res,next) => {
    console.log("aaa")
    console.log("111")
})

app.use((req,res,next) => {
    console.log("bbb")
    next();
    console.log("222")
})

app.use((req,res,next) => {
    console.log("ccc")
    next();
    console.log("333")
})

app.listen(3000, () => {
    console.log("3000端口启动")
})
//最终智能输出 
//aaa
//111

路由使用 send

app.get("/aa",(req,res)=> {
    res.statusCode = 200
    res.send("111")
})
app.post("/bb",(req,res)=> {
    res.statusCode = 200
    res.send({aa:'xxx'})
})

app.put("/cc",(req,res)=> {
    res.statusCode = 200
    res.send("ok")
})
app.delete("/dd",(req,res)=> {
    res.statusCode = 200
    res.send("ok")
})

send与end区别

1.send会自动根据内容,转化返回的信息

  1. 转化标签头格式
  2. 200的状态码
  3. json对象转字符串

2.end只处理输出

静态资源加载

//加载public文件夹下的所有文件
app.use(express.static(path.join(__dirname, 'public')));

cookies使用

//设置
app.post("/setcookie",(req,res)=> {
    res.cookie('name', 'stone', {maxAge: 6000, httpOnly: true})
    res.send('success for set up')
})
//获取
app.get("/getcookie",(req,res)=> {
  res.send(JSON.stringify(req.cookies)) // {"name":"stone"}
})

express脚手架

#安装脚手架
npm install -g express-generator
#创建项目
express --view=pug myapp
#启动项目
DEBUG=myapp:* npm start