91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nodejs如何封裝類似express框架的路由

發布時間:2021-07-16 14:02:51 來源:億速云 閱讀:140 作者:小新 欄目:web開發

這篇文章給大家分享的是有關Nodejs如何封裝類似express框架的路由的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

代碼如下

var http=require('http');

var ejs=require('ejs');

var app=require('./model/express-route.js');

console.log(app);

http.createServer(app).listen(3000);

app.get('/',function(req,res){

  var msg='這是數據庫的數據'

  ejs.renderFile('views/index.ejs',{msg:msg},function(err,data){

    res.send(data);
  })
})


//登錄頁面
app.get('/login',function(req,res){

  console.log('login');

  ejs.renderFile('views/form.ejs',{},function(err,data){

    res.send(data);
  })

})

//執行登錄
app.post('/dologin',function(req,res){

  console.log(req.body); /*獲取post傳過來的數據*/

  res.send("<script>alert('登錄成功');history.back();</script>")
})


app.get('/register',function(req,res){

  console.log('register');

  res.send('register');
})

app.get('/news',function(req,res){

  console.log('register');

  res.send('新聞數據');
})

express-route.js

var url=require('url');

//封裝方法改變res 綁定res.send()
function changeRes(res){

  res.send=function(data){

    res.writeHead(200,{"Content-Type":"text/html;charset='utf-8'"});

    res.end(data);
  }
}

//暴露的模塊
var Server=function(){


  var G=this;  /*全局變量*/

  //處理get和post請求
  this._get={};

  this._post={};



  var app=function(req,res){


    changeRes(res);

    //獲取路由
    var pathname=url.parse(req.url).pathname;
    if(!pathname.endsWith('/')){
      pathname=pathname+'/';
    }

    //獲取請求的方式 get post
    var method=req.method.toLowerCase();


    if(G['_'+method][pathname]){

      if(method=='post'){ /*執行post請求*/

        var postStr='';
        req.on('data',function(chunk){

          postStr+=chunk;
        })
        req.on('end',function(err,chunk) {

          req.body=postStr; /*表示拿到post的值*/


          //G._post['dologin'](req,res)

          G['_'+method][pathname](req,res); /*執行方法*/

        })



      }else{ /*執行get請求*/
        G['_'+method][pathname](req,res); /*執行方法*/

      }

    }else{

      res.end('no router');
    }

  }

  app.get=function(string,callback){
    if(!string.endsWith('/')){
      string=string+'/';
    }
    if(!string.startsWith('/')){
      string='/'+string;

    }

    //  /login/
    G._get[string]=callback;

  }

  app.post=function(string,callback){
    if(!string.endsWith('/')){
      string=string+'/';
    }
    if(!string.startsWith('/')){
      string='/'+string;

    }
    //  /login/
    G._post[string]=callback;

    //G._post['dologin']=function(req,res){
    //
    //}
  }

  return app;

}

module.exports=Server();

感謝各位的閱讀!關于“Nodejs如何封裝類似express框架的路由”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安乡县| 西贡区| 宕昌县| 邵阳县| 黑龙江省| 宜宾县| 房产| 敦煌市| 称多县| 嵊泗县| 根河市| 彰化县| 丹棱县| 辽阳市| 永善县| 饶阳县| 江川县| 静乐县| 荥经县| 乐东| 杭锦后旗| 竹山县| 潜山县| 南召县| 霍城县| 灵石县| 齐齐哈尔市| 白水县| 库尔勒市| 阿合奇县| 舒兰市| 海林市| 武义县| 通化市| 乐都县| 牟定县| 余姚市| 西乌| 随州市| 剑川县| 南昌市|