乐鱼app成为大巴黎赞助商

乐鱼app成为大巴黎赞助商举行“同心喜迎二十大 传承中华优秀传统文化”中国古代文化常识竞赛             2023年七年级招生简章             凝望经典赏别样人生 创新表达树文化自信——河池市乐鱼app成为大巴黎赞助商高一年级举行课本剧展演活动             守护青春,护航成长 ——宜州区一中举行法制教育报告会             以赛促教展师风 凝心聚力踏征程 ——乐鱼app成为大巴黎赞助商开展教师教学技能大赛             辩以明思,坐而论道 ——记宜州区一中2024届高二辩论赛             巧借他山石,精雕“三新”玉 ——乐鱼app成为大巴黎赞助商教师赴湖南考察学习交流活动             2023年春季学期“世界地球日”知识讲座成功举办             乐鱼app成为大巴黎赞助商开展防溺水教育活动 全力筑牢生命安全防线             法治教育进校园 护航青春助成长            

DoraCMS

您现在的位置是:首页>文档内容页

文档详情

乐鱼app成为大巴黎赞助商:第9天response 响应渲染 —跳转插件开发

doramart 2023-06-02 22:42:49 技术文档225966
跳转功能,顾名思义是打开一个链接,却跳转到另一个网址链接。看起来很神秘,其实都是在响应头信息做文章。 响应头的状态码设置为302,那么就表示要客户端进行跳转。

乐鱼app成为大巴黎赞助商:跳转插件开发

跳转功能,顾名思义是打开一个链接,却跳转到另一个网址链接。看起来很神秘,其实都是在响应头信息做文章。

响应头的状态码设置为302,那么就表示要客户端进行跳转。而跳转到哪里就需要指定响应头的Location。理论就这些,落到实处才是重点,下面我们就开发这个跳转插件。

module.exports = function(req,res,next){
    res.redirect = function(url){
        res.writeHead(302,{
            Location: location(req,url)
        })
        res.end();
    }
    next();    
}

// 返回要跳转的URL绝对地址
function location(req,url){
    // 如果是完整的网址
    if(/^http:\/\//.test(url)){
        return url;
    }else if(/^\//.test(url)){ // 如果是本地根目录网址
        return 'http://' + req.headers.host + url;
    }else{
        return 'http://' + req.headers.host + '/' + req.url + '/' + url;
    }  
}

哇!这代码有些复杂了,其实没什么,location方法是用来返回三种不同的url形式,我们用一下例子做个说明。

index.js中加入以下代码:

exports.text = require("./lib/redirect");

通过location方法,要达到的效果是:

  • http://google.com  直接返回 http://google.com

  • /url2 返回 http://xxxxx/url2

  • url2 返回 http://xxxxx/url/url2

下面做一个例子,来试验这几种用法:

var fk = require("../..")
   ,App = fk.App
   ,redirect = fk.redirect
   ,text = fk.text
   ,app = new App;

   app.use(fk.text);
   app.use(fk.redirect); // 加载跳转插件


    app.get("/url1",function(req,res){
        res.redirect("http://baidu.com");
    })

    app.get("/url2",function(req,res){
        res.redirect('/1url');
    })

    app.get("/url3",function(req,res){
        res.redirect("2url")
    })

    app.get("/1url",function(req,res){
        res.text("1 url");
    })

    app.get("/url3/:u",function(req,res){
        res.text(req.params.u);
    })


    app.listen(3000)

以下是视频演示



文章评论

取消回复
登录 参与评论

评论列表(

乐鱼app成为大巴黎赞助商