Node.js-express框架的路由模块化封装

引入路由模块

let firstpageRoute = require('./routes/firstPage');

express 关联路由 使用矿建的中间件
all里面写路径 指当前路由的守卫 写* 指所有的路由守卫

app.all("*", (req, res, next) => {
    console.log("路由守卫");
    next();
});

app.use() 直接添加路由模块 直接正常的路由

app.use(firstpageRoute);

关联的时候给当前路由模块添加路由路径 名称作为主路由

app.use('/index', firstpageRoute);
app.listen(8000, "127.0.0.1", () => {
    console.log("服务器地址:", 'http://127.0.0.1:8000');
});
app.all('/', (req, res, next) => {
    console.log("定位路由");
    next();
});
get路由是通过地址访问的
app.get("/", (req, res) => {
    console.log("首页");
    res.send("express框架  get路由");
});
app.get("/login", (req, res) => {
    res.send("登录界面路由");
});
**路由的路由可以写正则表达式 进行匹配路径**
**路由点后边写后缀名   /logo.html**
/logo? ?匹配前面的子表达式0次或者1/log   /logo
/logo+ +匹配前面的子表达式1次或者多次  /logo  /logoo ....  
/lo*go *匹配前面的子表达式0次或者多次  保证输入和 表达式结尾一致
/logo/  只要路径里面包含字符的路径
/.*fly$/   .匹配任意打印或者非打印字符  除过\n
app.get(/.*fly$/, (req, res) => {
    res.send("正则匹配路由");
});
路由的动态传值  
localhost://8000/login/:userid
路由动态传值    捕获的值 存在 req.params
app.get("/regest/:userid/:name",(req,res)=>{
    //{"userid":"1","name":"maodou"}
    res.send(JSON.stringify(req.params));
});

http://localhost:8000/regest/10086/hook/maodou
app.get("/regest/:userid/hook/:name",(req,res)=>{
    //{"userid":"1","name":"maodou"}
    res.send(JSON.stringify(req.params));
});
由连接字符  -  动态传值
http://localhost:8000/regest/FROM-EXp
app.get("/regest/:from-:to",(req,res)=>{
    //{"from":"FROM","to":"EXp"}
    res.send(JSON.stringify(req.params));
});
链接字符  .   动态传值
http://localhost:8000/regest/10086.maodou
app.get("/regest/:from.:to",(req,res)=>{
    //{"from":"FROM","to":"EXp"}
    res.send(JSON.stringify(req.params));
});
对路由的动态传值  可以进行正则表达式 验证格式
 下面这个正则验证传值格式的时候  \  得转义
app.get('/regest/:userid(\\d+)',(req,res)=>{
    res.send(JSON.stringify(req.params));
});



路由的get传值
localhost:8000/login?id=10086&name=maodou
gei传值   接收的数据在  req.query这个属性上面
app.get("/regest",(req,res)=>{
    res.send("注册界面"+JSON.stringify(req.query));
});


路由的线路  类似路由的守卫功能   可以多个执行
一个路由执行多个回调函数
app.get("/regest", (req, res, next) => {
    // 代码
    console.log("在regest里面检测");
    next();
}, (req, res, next) => {
    console.log("再次检测");
    // 例如  这次路由检测不成功
    if (false) {
        next();
    }
    else {
        //在这里跳过剩余的路由回调  走下个路由回调
        next('route');  
    }

}, (req, res) => {
    res.send("注册界面");
});
app.get("/regest", (req, res, next) => {
    // 代码
    console.log("在regest里面检测");
    next();
}, (req, res, next) => {
    console.log("再次检测");
    next();
}, (req, res) => {
    res.send("注册界面");
});


同名路由 组合线路
app.get("/regest", (req, res, next) => {
    console.log(1);
    next();
}, (req, res, next) => {
    console.log(2);
    if(false)
    {
        next();
    }
    else{
        // 跳过剩余的路由回调  执行下一个路由
        next('route');
    }
}, (req, res, next) => {
    console.log(3);
    next();
});

app.get("/regest", (req, res, next) => {
    console.log(4);
    next();
}, (req, res, next) => {
    console.log(5);
    next();
}, (req, res) => {
    console.log(6);
    res.send("regest");
});

将路由的线路做成数组来处理
let fun1=(req,res,next)=>{
    console.log(1);
    next();
}
let fun2=(req,res,next)=>{
    console.log(2);
    res.send("注册");
}
app.get("/regest",[fun1,fun2]);



路由的route方法
模块化路由封装  链式
下面这种路由可以get  也可以post
form表单的方式  put  增加数据   insert  delete  update
app.route('/regest').get((req,res)=>{
    res.send("注册");
}).post((req,res)=>{
    res.send("post路由");
});



post 方式过来的路由  才能启动post路由
app.post("/dologin", (req, res) => {
    res.send("express框架  post路由");
});
//监听服务器端口
app.listen(8000, '127.0.0.1', () => {
    console.log("服务器启动成功!", 'http://127.0.0.1:8000');
});

路由封装

//封装首页的路由
let express = require('express');
//导出框架路由
let router = express.Router();
// 建立路由的模块
router.get("/", (req, res) => {
    res.send("首页");
});
router.get("/blog", (req, res) => {
    res.send("blog");
});
router.get('/info', (req, res) => {
    //例如做检测
    if (false) {
        res.send("info");
    } else {
        // 重定向路由
        res.redirect('/index/');
    }
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值