rrestjs框架更简洁的api
by snoopyxdy
at 2012-10-11 23:28:20
original http://snoopyxdy.blog.163.com/blog/static/601174402012911112350717
之前@d4rkl0rd 同学写了一篇rrestjs框架的文章:
让我很欣慰啊,虽然现在用rrestjs开发项目的TX不多,但是还是有那些愿意尝试并不断给我意见的朋友,衷心的感谢他们。比如@a272121742就给了我很多api方面的修改意见。
最近发布了rrestjsv0.9版本,增加一些功能和修复了bug,从而使api也更加简洁,想从另外一个方面让大家对node.js有个认识,除了expressjs,还有rrestjs轻量级框架可供选择啊。
我们先来看下一个简单的hello world服务器的代码.
var http = require('http'),rrest = require('rrestjs'),server = http.createServer(function(req, res){//完全原生的node.js手册代码风格,没有学习门槛res.send('hello world everyone!'); //rrestjs封装了一个res.send方法,用来响应请求}).listen(3000);
大家可以看到上述代码,只不过多了一行require('rrestjs'),而其他完全与node.js官网的示例一模一样,这也是rrestjs称作轻量级的原因,完全没有侵入您的代码。
node.js可以充分的利用cpu个数,来启动cluster。利用rrestjs框架您只需要在config配置文件中设置如下,即可轻松开启多个进程,并且进程间会由rrestjs自动完成心跳和内存监控,一旦发现异常将自动重启子进程。
isCluster:false, //是否开启多进程集群ClusterNum:4, //开启的进程数
您的服务器代码,就是上述hello world代码无需任何改动。只需要在前面加上一行载入配置文件即可:
module.exports.conf= require('./config/multi.conf.js');//只需要加入这行载入配置文件var http = require('http'),rrest = require('rrestjs'),server = http.createServer(function(req, res){res.send('hello world everyone!');}).listen(3000);
当然您还不必担心多cluster的session内存共享工作,rrestjs已经帮您自动同步内存session信息了,但是还是建议您利用rrestjs自带的mongodb的session功能存储
当您只开启1个cluster时,rrestjs框架会进入开发者模式,当配置文件中的目录里的文件发生改变时,cluster将自动重启,免去您频繁的CTRL+C和上+enter了
之前有TX议论是try{}catch{}好还是路由表好,我在0.9版本里为rrestjs新增加了一项简单的路由表控制,比如:
var conf = module.exports.conf= require('./config/post.conf.js');conf.manualRouter = {//手动路由"get:/user/face":function(req, res){res.send('change face')},"post:put:/user/info":function(req, res){res.send('get not access!')},"/user/all":function(req, res){if(!req.session.count) req.session.count = 0res.send('all can access!'+(req.session.count++));},}var http = require('http'),rrest = require('../'),server = http.createServer(function (req, res){ //这里依然是主入口if(req.pathname === '/'){//匹配是否请求根目录res.send('hello world')return false; //这里return false表示不再转发到下面路由表}//如果不是访问根目录,则去匹配路由表}).listen(rrest.config.listenPort);
简单说明一下:路由表的设置是这样规定的
方法:方法:URL路径
rrestjs也是支持类似try和catch的路由的,这样速度更快。
module.exports.conf = require('./config/config');//加载配置文件,必须放在rrestjs加载之前var http = require('http'),rrest = require('rrestjs'),server = http.createServer(function (req, res){//这里是主入口,可以根据您的需要自由添加一些东西try{require('./controller/'+req.path[0])[req.path[1]](req, res);//这里是核心部分,执行指定控制器中的指定方法,将req和res传参进去}catch(err){restlog.info(err);//rrestjs封装的日志方法res.r404(); //相应定义好的404页面}}).listen(3000);
安装rrestjs的方法也非常简单:
npm install rrestjs
即可,也可以去github上下载:
rrestjs官网:www.rrestjs.com
基于rrestjs框架制作的轻博客:www.wujb.net
非常感谢您对rrestjs框架提供宝贵意见和bug。