zoukankan      html  css  js  c++  java
  • 仿express封装路由

    首先是仿照路由函数,这个是引用的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['_'+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; } } return app; } module.exports=Server();

    下面是入口的js

    var http=require('http');
    
    var ejs=require('ejs');
    
    var app=require('./model/express-route.js');
    
    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('新闻数据');
    })
  • 相关阅读:
    ORACLE中seq$表更新频繁的分析
    VmWare平台Windows Server 2012 无响应宕机
    SQL Challenge ——快速找到1-100之间缺失的数
    ORACLE推导参数Derived Parameter介绍
    SQL SERVER 数据库各版本功能对比
    Jsp中格式化时间戳的常用标签
    SQL Server 2014 Database Mail重复发送邮件特殊案例
    采用HTML5之“data
    多线程之策略模式
    docker attach卡住,和exec的选择
  • 原文地址:https://www.cnblogs.com/qiaohong/p/8459163.html
Copyright © 2011-2022 走看看