Node.js Express 框架

Express 框架

1.Express框架简介

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站。
Express 框架核心特性:

  1. 可以设置中间件来响应 HTTP 请求。
  2. 定义了路由表用于执行不同的 HTTP 请求动作。
  3. 可以通过向模板传递参数来动态渲染 HTML 页面。

EXpress的使用:

  1. 安装cnpm install express --save-dev
  2. 连接服务器

const express=require(“express”);
let app=new express();

在express里面配置静态资源文件托管

Express 提供了内置的中间件 express.static 来设置静态文件如:图片, CSS, JavaScript 等。

目录结构:
在这里插入图片描述

app.js

//1.安装cnpm install express --save-dev
//2.连接服务器
const express=require("express");
let app=new express();
//在express里面配置静态资源文件托管
//静态资源目录  目的是放置  图片 css  js等静态文件
app.use(express.static("public"));
//虚拟静态目录
//app.use("/static",express.static("public"));
app.use("/public",express.static(path.join(__dirname,"/static")));
app.listen("8150",(req,res)=>{
    console.log("127.168.90.1:8150");
})

使用中间件:

表达是路由和中间件的web框架,它有自己的最小功能:表达应用程序本质上是一系列的中间件函数调用。
中间件函数是函数访问请求对象(req),响应对象(res),下一个中间件功能在应用程序的请求-响应周期。 下一个中间件功能通常是用一个变量命名next。
中间件功能可以执行以下任务:

  1. 执行任何代码。
  2. 更改请求和响应对象。
  3. 请求-响应周期结束。
  4. 叫下一个中间件函数的堆栈。

如果目前的中间件功能不请求-响应周期结束时,必须调用next()将控制传递给下一个中间件的功能。 否则,请求将被搁置下来。
一个表达应用程序可以使用以下类型的中间件:

  1. 应用程序中间件
  2. 路由器级别中间件
  3. 错误处理中间件
  4. 内置的中间件
  5. 第三方中间件

Express的中间件

const express=require("express");
let app=new express();

app.use((req,res,next)=>{
    console.log("在执行路由之前执行拦截操作")
    next();
})
app.listen("8150",(req,res)=>{
    console.log("127.168.90.1:8150");
})

1. 应用层中间件

绑定应用程序中间件的一个实例应用程序对象通过使用app.use()和app.METHOD()功能,METHOD请求的HTTP方法,中间件功能处理(如GET、PUT、POST)小写。

const express=require("express");
let app=new express();
 //应用层中间件 --项目运行都会执行的中间件
app.use((req,res,next)=>{
    
    next();
})
app.listen("8150",(req,res)=>{
    console.log("127.168.90.1:8150");
})

2. 路由中间件+路由

路由是指一个应用程序的端点(uri)如何应对客户端请求。
express 里面的路由 get post insert put delete
app是的实例express
METHOD是小写的http请求方法
PATH 是服务器上的路径
HANDLER是匹配路线是执行的功能

路由器级别中间件和应用程序级中间件,以同样的方式工作,除了它是必然的一个实例express.Router()。

const express=require("express");
let app=new express();
//express中的路由
let router=express.Router();

app.use("/",(req,res,next)=>{
    console.log("首页加载")
    next();
});
app.use("",(req,res)=>{
    console.log("1");
    res.send("express");
});
app.use("/login",(req,res,next)=>{
    console.log("login加载");
    next();
})
app.use("/login",(req,res)=>{
    console.log("2");
    res.send("login");
});
app.use("/regist",(req,res)=>{
    res.send("注册");
})
app.listen("8150",(req,res)=>{
    console.log("127.168.90.1:8150");
})

//路由中间件 第二种写法
router.use("/",(req,res,next)=>{
    console.log("1");
    next();
})
router.use("/",(req,res,next)=>{
    res.send("首页")
});
//使用express router 配置路由
//路由中间件
router.get("/",(req,res,next)=>{
    console.log("1");
    next();
})
router.get("/",(req,res,next)=>{
    res.send("首页")
});

动态路由传值和get传值

//动态路由传值 类似vue里面的动态路由传值 /:id
router.get("/regest/:id/:name",(req,res,next)=>{
    
    //获取动态路由传递的参数
    console.log(req.params);
    let id=req.params.id;
    let name=req.params.name;
    res.send("注册成功!"+id+"/"+name);

})
//路由上的get传值
router.get("/user",(req,res,next)=>{
    let params=url.parse(req.url,true).query;
    let id=params.id;
    let name=params.name;
    res.send("get传值:"+id+"/"+name);
})

3. 第三方中间件

使用第三方中间件来表达应用程序添加功能。
安装节点。 js为所需的功能模块,然后加载在你的应用程序在应用程序级别或在路由器上。

body-parse:

  1. 使用第三方中间件 安装 cnpm install body-parser --save-dev
  2. 引入body-parser
  3. bodyparser在express中进行配置
  4. pist提交取值在req.body
    cookie-parser 第三方中间件
  5. 安装 cnpm install cookie-parser --save-dev
  6. 引入 const cookie=require(“cookie-parser”);
  7. 进行关联 app.use(cookie);
const path=require("path");
const bodyparser=require("body-parser");
const ejs=require("ejs");
const cookie=require("cookie-parser");
const fs=require("fs");
//使用express 
const express=require("express");
let app=new express();
//设置ejs模板
app.set("view engine","ejs");
//修改ejs后缀名为html
app.engine('html',require('ejs').readerFile);
//关联cookie-parser
app.use(cookie());
//配置bodyparser
app.use(bodyparser.urlencoded({extended:false}));
//parser application/json 配置返回的数据格式
app.use(bodyparser.json());
//express中的路由
let router=express.Router();
router.get("/",(req,res,next)=>{

    //在首页加载之前缓存cookie
    res.cookie("user","maodou",{
        maxAge:1000*60,
        signed:false
    })
    console.log("1");
    next();
},(req,res,next)=>{
    //express 框架缓存值
    app.set("user","张三");
    app.locals["age"]=20;
    ejs.readerFile("./views/index.html",(err,str)=>{    
        if(err){
           next(err); 
        }
        res.send(str);
    })
    ejs.readerFile("./views/index.ejs",(err,str)=>{    
         if(err){
            next(err); 
         }
         res.send(str);
     })
});
//cookie 设置签名的时候在上面引入里面签名的符号 app.use(cookie("adsdas"));

router.get("/login",(req,res,next)=>{
    //获取cookie的缓存值
    //未签名 signed:false req.cookies获取
    //签名          req.signedCookies获取
    console.log(req.cookies);  
    next();
})
router.get("/login",(req,res,next)=>{
    //取值
    console.log(app.get("user"))
    console.log(app.locals["age"]);

    fs.readFile("static/stu.txt",(err,data)=>{
        if(err){
            next(err);
        }
        else{
            res.send("登录"+data.toString())
        }
    });
});
//关联
app.use(router);
app.listen("8150",(req,res)=>{
    console.log("127.168.90.1:8150");
})
//koa 框架 和express类似 是个异步框架

4. 错误中间件

错误处理中间件总是四个参数。 你必须提供四个参数来确定它作为错误处理中间件的功能。 即使你不需要使用next对象,您必须指定它保持签名。 否则,next对象将被视为普通中间件和将无法处理错误。(err, req, res, next)

const fs=require("fs");
const express=require("express");
let app=new express();
//错误中间件
app.use((err,req,res,next)=>{
    fs.appendFile("static/err.txt",err.stack+"\n",(err)=>{
        console.log("错误写入成功!");
        res.status(400).send("文件丢失");
    });
})
app.listen("8150",(req,res)=>{
    console.log("127.168.90.1:8150");
})

5. 内置中间件

首先是版本4。 x,表达不再依赖连接。 中间件 附带的功能表达现在在单独的模块; 看到中间件功能的列表。
表达有以下内置的中间件功能:

  1. express.static是静态的资产,比如HTML文件,图片,等等.
  2. express.json与JSON解析传入的请求负载。注意:使用表达4.16.0 +
  3. express.urlencoded解析传入的请求url编码的有效载荷。注意:使用表达4.16.0 +
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值