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

用node写的一个后台框架的更多相关文章

  1. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  2. 乱写的一个SQL框架

    闲来没事,看了mybatis的实现形式,就心血来潮的自己弄了一个仿照mybatis的框架,性能肯定不好,而且有很多问题,但是是一次有益的尝试 1.基本配置文件 <!--加载数据源--> & ...

  3. vue elementui 写的一个后台管理页面模板

    https://github.com/PanJiaChen/vue-element-admin

  4. 用GO写一个后台权限管理系统

    最近用GO写了一个后台权限管理系统,在WIN10和ubuntu下部署,在win系统下编译ububtu的部署文件要先做如下配置 set GOARCH=amd64 set GOOS=linux go bu ...

  5. jquery easyui+layer后台框架

    最近使用jquery easyui搭建了一个后台框架,以方便以后使用 上图先: 下载地址:CSDN下载

  6. 从 0 开始手写一个 Mybatis 框架,三步搞定!

    阅读本文大概需要 3 分钟. MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码. 本文完成的Mybatis功能比较简单,代码还有许 ...

  7. 剖析手写Vue,你也可以手写一个MVVM框架

    剖析手写Vue,你也可以手写一个MVVM框架# 邮箱:563995050@qq.com github: https://github.com/xiaoqiuxiong 作者:肖秋雄(eddy) 温馨提 ...

  8. 手写一个RPC框架

    一.前言 前段时间看到一篇不错的文章<看了这篇你就会手写RPC框架了>,于是便来了兴趣对着实现了一遍,后面觉得还有很多优化的地方便对其进行了改进. 主要改动点如下: 除了Java序列化协议 ...

  9. 写了一个vue+antdv的后台管理模板

    1,项目简介 写在前面===>这是一个vue+antdv的后台管理模板 项目地址: https://github.com/BaiFangZi/vue-antd-manage 1.1,概述 ​ 最 ...

随机推荐

  1. Nodejs:npm run build之后,dist\index.html页面在火狐中可以正常显示登录页面并登录成功,在Chrome中可以正常显示登录页面,登录失败

    问题描述:Nodejs:npm run build之后,dist\index.html页面在火狐中可以正常显示登录页面并登录成功,在Chrome中可以正常显示登录页面,登录失败 解决方法:将打包后的d ...

  2. JS数据结构及算法(二) 队列

    队列是遵循先进先出的一种数据结构,在尾部添加新元素,并从顶部移除元素. 1.普通队列 function Queue() { this.items = []; } Queue.prototype = { ...

  3. Where do I belong-freecodecamp算法题目

    Where do I belong(数组排序并找出元素索引) 要求 给数组排序 找到指定的值在数组的位置,并返回位置对应的索引. 思路 设定.sort()需要的返回函数 将要搜索的值添加到数组内 用. ...

  4. Python基础学习总结__Day4

    一.装饰器 前戏: 1.函数即变量 (1)函数名为‘门牌号’即内存地址,加括号开始调用 (2)没有变量调用将清空内存 (3)匿名函数(lambda函数):没有‘门牌号’,需要赋值给变量,否则将会被清空 ...

  5. python3.6 取整除法

    python3.6 中取整除法运算逻辑如下: d 非零,那么商 q 满足这样的关系: a = qd + r ,且0 ≤ r n1=7//3 #7 = 3*2 +1 n2=-6.1//3 #-7 = 3 ...

  6. 为工程添加上下文菜单(ContextMenu)

    上下文菜单大多数情况下都是为ListView中的Item添加的,长按2S左右跳出菜单,添加上下文菜单必须重写活动中的onCreateContextMenu()方法和onContextItemSelec ...

  7. luogu2564 [SCOI2009]生日礼物

    排序枚举左端点,则右端点必定不降 #include <algorithm> #include <iostream> #include <cstring> #incl ...

  8. day03_11 if语句实现猜年龄01

    老男孩猜年龄游戏 age_of_princal = 56 guess_age = int( input(">>:") ) #以下为伪代码 ''' if guess_ag ...

  9. Ajax、Comet、Websocket、SSE

    从 http 协议说起 1996年IETF  HTTP工作组发布了HTTP协议的1.0版本 ,到现在普遍使用的版本1.1,HTTP协议经历了17 年的发展.这种分布式.无状态.基于TCP的请求/响应式 ...

  10. poj2135最小费用最大流经典模板题

    Farm Tour Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13509   Accepted: 5125 Descri ...