這篇文章給大家分享的是有關(guān)Nodejs如何封裝類似express框架的路由的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)是專業(yè)的烏翠網(wǎng)站建設(shè)公司,烏翠接單;提供網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行烏翠網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
代碼如下
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='這是數(shù)據(jù)庫的數(shù)據(jù)' 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); }) }) //執(zhí)行登錄 app.post('/dologin',function(req,res){ console.log(req.body); /*獲取post傳過來的數(shù)據(jù)*/ 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('新聞數(shù)據(jù)'); })
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'){ /*執(zhí)行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); /*執(zhí)行方法*/ }) }else{ /*執(zhí)行g(shù)et請求*/ G['_'+method][pathname](req,res); /*執(zhí)行方法*/ } }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();
感謝各位的閱讀!關(guān)于“Nodejs如何封裝類似express框架的路由”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
文章題目:Nodejs如何封裝類似express框架的路由
分享URL:http://jinyejixie.com/article48/possep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)頁設(shè)計公司、微信公眾號、網(wǎng)站制作、小程序開發(fā)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)