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

 更新时间:2020年01月05日 11:25:00   作者:loaderman  
在本篇文章里小编给大家整理的是关于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();

以上代码很简单,大家可以测试下,如果有任何疑问和补充可以联系小编,更多内容可以查看以下相关知识点。

相关文章

  • 在 Node.js 中使用 async 函数的方法

    在 Node.js 中使用 async 函数的方法

    利用 async 函数,你可以把基于 Promise 的异步代码写得就像同步代码一样。一旦你使用 async 关键字来定义了一个函数,那你就可以在这个函数内使用 await 关键字。下面通过本文给大家分享Node.js 中使用 async 函数的方法,一起看看吧
    2017-11-11
  • pnpm workspace管理monorepo项目使用过程详解

    pnpm workspace管理monorepo项目使用过程详解

    这篇文章主要为大家介绍了pnpm workspace管理monorepo项目使用过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • WebSocket Node构建HTTP隧道实现实例

    WebSocket Node构建HTTP隧道实现实例

    这篇文章主要为大家介绍了WebSocket Node构建HTTP隧道实现实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Node.js API详解之 string_decoder用法实例分析

    Node.js API详解之 string_decoder用法实例分析

    这篇文章主要介绍了Node.js API详解之 string_decoder用法,结合实例形式分析了Node.js API中string_decoder的功能、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 在nodejs中使用swagger方式

    在nodejs中使用swagger方式

    这篇文章主要介绍了在nodejs中使用swagger方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 一会带你学会用Webpack搭建开发环境并打包代码

    一会带你学会用Webpack搭建开发环境并打包代码

    这篇文章主要给大家介绍了关于如何用Webpack搭建开发环境并打包的相关资料,webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler),需要的朋友可以参考下
    2023-08-08
  • node.js增删改查保姆级教程方法

    node.js增删改查保姆级教程方法

    这篇文章主要给大家介绍了关于node.js增删改查保姆级教程的相关资料,node.js接口可以实现增加、删除、修改和查询操作,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 一文学会如何升级npm管理的各依赖版本

    一文学会如何升级npm管理的各依赖版本

    npm在前端开发流程中提供了非常完善的自动化工具链,已成为每个前端开发者必备的工具,下面这篇文章主要给大家介绍了关于如何升级npm管理的各依赖版本,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • nodejs配置express服务器运行自动打开浏览器详细步骤

    nodejs配置express服务器运行自动打开浏览器详细步骤

    在nodejs中使用express来搭建框架可以说是非常的简单方便,下面这篇文章主要给大家介绍了关于nodejs配置express服务器运行自动打开浏览器的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Node.js中的EventEmitter类使用小结

    Node.js中的EventEmitter类使用小结

    EventEmitter 是 Node.js 中的一个核心模块,它提供了一种实现事件驱动编程的机制,它是一个基于观察者模式的类,用于在应用程序中处理事件和触发事件,这篇文章主要介绍了Node.js中的EventEmitter类介绍,需要的朋友可以参考下
    2023-12-12

最新评论