zoukankan      html  css  js  c++  java
  • 用node写的一个后台框架

    server.js

    var http=require('http')
    var handleUrl=require('./handleUrl')
    var config = require('./config');
    http.createServer(function(req,res){
        res.writeHead(200, {
            'Content-Type': 'text/plain',
            'Content-Type':'text/html; charset=utf-8'
        });
        res.write(handleUrl(req.url)+"")
        res.end();
    }).listen(config.port)
    

      handleUrl.js

    var config=require('./config')
    var  fs=require('fs')
    var path=require('path')
    const { URL } = require('url');
    const querystring = require('querystring');
    
    module.exports=function(url){
        //判断请求的路径中有没有api
        if(url.indexOf(config.ApiSuffix)>-1){
            return parseUrl(url)
        }else{
            return parseStaticUrl(url)
        }
    }
    //静态资源请求路径处理
    function  parseStaticUrl(url){
        if(url.indexOf('favicon.ico')<=-1){
            var urlObj=require('url').parse(url)
            var pathname=urlObj.pathname;
            var filepath=path.resolve(config.staticFile+pathname);//获取文件的绝对地址
            return fs.readFileSync(filepath).toString('utf8');
        }
    }
    //api请求路径处理
    function  parseUrl(url){
        if(url.indexOf('favicon.ico')<=-1){
            var urlObj=require('url').parse(url)
            var pathname=urlObj.pathname;
            var reg=new RegExp("/(\w+)\"+config.ApiSuffix+"$");
            var funame=pathname.match(reg)[1];//获取要执行的方法名
            var filepath=path.resolve(pathname.substr(1,pathname.lastIndexOf("/")-1)+".js");//获取文件的绝对地址
            var param=querystring.parse(urlObj.query)//把参数解析成对象
            var targetfile=require(filepath);
            return targetfile[funame](param)
        }
    }
    

      config.js

    module.exports={
        ApiSuffix:'.do',//api请求后缀
        staticFile:'./static',//存放静态资源的文件夹路径
        port:9999//端口号
    }
    

      controller/user.js

    module.exports={
        name : 8888888888888,
        addUser : function(obj){
            return  "您要增加的用户名字是"+obj.name+"";
        }
    }
    

      

    api访问举例  http://localhost:9999/controller/user/addUser.do?name=5555

    返回的结果是   

    您要增加的用户名字是5555
  • 相关阅读:
    <转>CSS3 Media Queries 实现响应式设计
    css3的display:box研究
    CSS3制作渐变文字
    (转)apple-touch-icon-precomposed 和 apple-touch-icon属性区别
    (转)移动平台的meta标签
    day 57 jQuery插件
    day56 文件 文档处理,事件
    day 55 jQuery-part2
    day 54 jQuery, part-1
    day 52 dom 事件
  • 原文地址:https://www.cnblogs.com/liuhao-web/p/7169024.html
Copyright © 2011-2022 走看看