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. Bootstrap历练实例:标签修饰

    您可以使用修饰的 class label-default.label-primary.label-success.label-info.label-warning.label-danger 来改变标签 ...

  2. mysql5.7.24 解压版安装步骤以及遇到的问题

    1.下载 https://dev.mysql.com/downloads/mysql/ 2.解压到固定位置,如D:\MySQL\mysql-5.7.24 3.添加my.ini文件 跟bin同级 [my ...

  3. 01_3_创建一个Servlet

    01_3_创建一个Servlet 1.创建一个Servlet import java.io.IOException; import java.io.PrintWriter; import javax. ...

  4. 01_2_Servlet简介

    01_2_Servlet简介 1. Servlet简介 Servlet是服务器小应用程序 用来完成B/S架构下,客户端请求的响应处理 平台独立,性能优良,能以线程方式运行 Servlet API为Se ...

  5. cocos2dx for lua 摄像机移动

    在cocos2dx中,我们想通过移动摄像机来做一些特殊处理,比如将摄像机聚焦在某个物体上,或者摄像机颤抖,摄像机原理观察sprite回收状况等等, 都需要通过相机移动来使用. cocos2dx中的摄像 ...

  6. c++ 定义一个结构体student,输入多个student的信息并以三种方式显示

    #include <iostream> #include <string> using namespace std; const int slen = 30; struct s ...

  7. HDU-1072-Nightmares

    这题可以用dfs写,我们记忆化搜索. 我们定义一个step和time数组,分别表示走到这点的最小步数,time表示走到该点炸弹还剩多少时间. 递归边界一是,如果走到该点,时间等于0,我们就返回. 如果 ...

  8. Linux基础学习-使用vsftpd服务传输文件

    使用vsftpd服务传输文件 1 安装vsftpd [root@qdlinux ~]# yum install vsftpd Loaded plugins: product-id, search-di ...

  9. CentOS 系统下Gitlab搭建与基本配置 以及代码备份迁移过程

    GitLab 是一个开源的版本管理系统,提供了类似于 GitHub 的源代码浏览,管理缺陷和注释等功能,你可以将代码免费托管到 GitLab.com,而且不限项目数量和成员数.最吸引人的一点是,可以在 ...

  10. Thinkphp5 获取执行的sql语句

    获取最后执行的sql语句 $str_order_action = db('order_action')->getLastSql(); //获取最后执行的sql语句 获取执行的sql语句 $ord ...