一个NodeJS写的基于MVC的服务器
来源:互联网 发布:mac如何连接远程服务 编辑:程序博客网 时间:2024/06/06 11:35
目前实现了静态文件下载、根据地址导航到控制器相应的控制器方法,但视图模版功能目前还未实现。
服务器代码(httpserver.js):
var http = require("http"), url = require("url"), path = require("path"), fs = require("fs"), getContentType=function(type){ var type=type.indexOf(".")===0 ? type.substr(1) : type, defType="application/octet-stream", types={ html:"text/html", js:"text/javascript", css:"text/css", gif:"image/gif", jpg:"image/jpeg", png:"image/png", }; return typeof(types[type])!="undefined" ? types[type] : defType; };http.createServer(function(req, res) { var pathname=url.parse(req.url).pathname; if(pathname=="/"){ pathname+="index.html"; } pathname=__dirname+pathname; console.log(req.url); if(req.url.match(/^\/controller\//) || req.url.match(/^\/data\//)){ //禁止访问目录 res.writeHead(404, {"Content-Type" : "text/html"}); }else if(req.url.match(/^\/\w+\/\w+(\?.*)?$/)){ //控制器输出 var u=url.parse(req.url), ca=u.pathname.substr(1).split("/"), c=ca[0],a=ca[1], cpath=__dirname + "/controller/"+c+".js", controller; if(fs.existsSync(cpath)){ res.writeHead(200, {"Content-Type" : getContentType("html")}); controller=require(cpath); if(typeof(controller[a])!="undefined"){ controller[a](res,u); } //delete require.cache[cpath]; //是否清空脚本缓存 }else{ res.writeHead(200, {"Content-Type" : getContentType("html")}); res.end(path+" not exists!"); } }else if(fs.existsSync(pathname)){//静态文件输出 res.writeHead(200, {"Content-Type" : getContentType(path.extname(pathname))}); fs.readFile(pathname, function(err, data) { res.end(data); }); }else{ res.writeHead(404, { "Content-Type" : getContentType("html") }); res.end("<h1>404 Not Found</h1>"); }}).listen(8080, "127.0.0.1");console.log("Server running at http://127.0.0.1:8080/");
控制器代码(controller/project.js):
var tm=1, mysql=require("mysql"), conn = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: '123456', database:'dbname', port: 3306 });conn.connect();var project={ show:function(res,url){ var paras={},tb="user"; console.log(url.query); if(typeof(url.query)=="string"){ var ps=url.query.split("&"),pss; for(var k in ps){ pss=ps[k].split("="); paras[pss[0]]=pss[1]; } } res.write((tm++)+"<br/>"); conn.query( 'SELECT * from prefx_'+(typeof(paras.tb)!="undefined" ? paras.tb : tb )+' limit 0,3', function(err, results, fields){ var field="",str="",fds=[]; if (results) { for(var k in fields){ fds.push(fields[k]['name']); } for ( var i = 0; i < results.length; i++) { str=""; for(var k in fds){ str+=results[i][fds[k]]+"\t"; } res.write(str+"<br/>"); } } res.end("<br/>"+(new Date()).getTime()); } ); }}module.exports=project;
网站目录结构如下:
例如访问:http://127.0.0.1:8080/project/show,则访问project控制器中show方法
0 0
- 一个NodeJS写的基于MVC的服务器
- 一个用nodejs写的简单http服务器
- 基于NodeJS的MVC框架汇总
- 基于nodejs的tcp服务器与客户端
- 使用nodejs写一个简易的爬虫
- 搭建一个简单的Nodejs服务器
- 一个简单的nodejs web服务器
- nodejs基于express4+mysql+express-controller的mvc框架
- 写一个小小的服务器
- 基于Nettty打造自己的MVC服务器
- nodejs+mongodb写的一个简单的登录注册
- 写一个简单的Spring MVC
- 记一个自己写nodejs实现的树洞
- [NodeJS]使用Node.js写一个简单的在线聊天室
- PHP基于MVC架构的一个设计
- 基于MVC架构写一个UI框架
- NodeBB,一个基于nodejs的响应式论坛
- 基于NodeJS实现的一个css预处理器
- QGraphicsView框架容易忽视的坐标问题-“画布”QgraphicsScene到底放在了哪儿?
- 解决问题, 才是首要目的
- $.fn.extend 与$.extend
- 对经济的一些认识
- centos6.5安装boost
- 一个NodeJS写的基于MVC的服务器
- Qt浅谈之十七:飞舞的蝴蝶(GraphicsView框架)
- leetcode-258.add digits/Digital root
- Qt浅谈之十八:GraphicsView框架事件处理
- Java图形化界面开发
- MySQL中concat函数(连接字符串)
- Python——sys.argv
- Spring IOC原理之Java反射机制
- hibernate问题总结。