JavaScript

超轻量级php框架startmvc

Nodejs封装类似express框架的路由实例详解

更新时间:2020-09-29 02:30:01 作者:startmvc
代码如下varhttp=require('http');varejs=require('ejs');varapp=require('./model/express-route.js');console.log(app);ht

代码如下


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框架