轻量级简单Node.js框架SevenzJS
发布于 11 年前 作者 XadillaX 7407 次浏览 最后一次编辑是 8 年前

与其说是一个框架还不如说这是一个Node.js的路由框架。目前实现的功能很简单——只是能对一定的路由进行解析并且执行。

感觉网上发布的大多都太繁琐或者有很多不需要的功能,所以自己定制了一个适合我自己的最简单的小框架。

我们所要做的就是去action目录中实现自己的各个js模块,路由能自己解析。

如你的actions/foo.js下面有一个bar函数,那么直接能通过

http://domain:port/foo/bar

来进行访问。

这里贴一下你的业务逻辑模块所需要实现的代码demo:

exports.action = function(action) {
    var self = { };
    var sAction = action;

    self["index"] = function() {
        sAction.write("Hello world!");
    }

    return self;
}

以后每个URI的第一层相当于一个模块,而第二层相当于一个函数-。 -

东西虽小,主要是应公司的一个项目而生。项目很简单,根本用不到网页渲染,我所要做的只是通过Node.js查询数据输出Json字符串来让客户端获取而已,所以暂时没有模板模块计划。

不过具体情况要视以后情况而定了。项目昨天才开始实施的,目前仍在继续开发和完善中,不过有兴趣的童鞋可以fork下来自己试试。

欢迎fork~

https://github.com/XadillaX/SevenzJS

27 回复

模板就是蛋疼,本来是html的,还要翻译成jade/ejs 最后node耗cpu再翻译成html

今天初步实现了MongoDB的阻塞模式。

因为有时候阻塞模式实在是太常用到了,包括我的这个框架,如果不阻塞的话,内容根本输不出,因为非阻塞那个地方执行完的时候早就已经输出完了。

如果需要用到MongoDB的阻塞模式的话,可以参考下我的代码喔~

今天实现了MySql的shell类。也是同步阻塞模式的。

欢迎fork~

什么东西都阻塞的话, nodejs没有任何的优势, 基本跟坨屎一样, 我基本不用阻塞…

get/post怎么区别呢?

什么意思?

@XadillaX

比如同样的路径下 get 请求 和post请求的处理是怎么写?

@yakczh 打开action/index.js,然后在self[“index”]函数里面这么写:

console.log(helper.GET[“key”]); console.log(helper.POST[“key”]);

就好了啊。

PS:这个项目我暂时只是用来传输JSON Api的。

哈 类似php mvc框架

MysqlConnectionQueued.prototype = new bindings.MysqlConnection();
                                              ^
TypeError: Cannot read property 'MysqlConnection' of null

这是什么情况

var     mysql = require('mysql-libmysqlclient');

也是报同样的错误,是不是缺什么驱动程序?

简单跟express pk了一下 ab -n 1000 -c 60 http://192.168.83.128:5555/index SevenzJS 71.63 rps express3 94.17
可能是输出日志影响性能了,在setting.js里没有找到关闭日志的选项

支持原创,支持rest,貌似和@snoopy 的 rrestjs 路由方式类似

如果actions也能象模板那样动态载入,这样就跟php一样了,改了代码就不用重启服务器了

我在这之前玩的是ThinkPHP,所以你懂得-。 -

或者这个东西要你自己再npm一遍?因为貌似他要npm下来之后他自己自动编译一遍的。

-. - 不好意思,没考虑到关闭日志。

@xujun52011 windjs模拟阻塞模式

@xujun52011 我并没有什么东西都用阻塞。其实想一下,对于每个请求之间用非阻塞,对于每个请求的内部还是用阻塞的流程下来,这就已经非常足够了,不是么?可以仔细想一下。

@Nightink 最新的push修正了一些bug。

对了,你有装mysql-devel么?这个是在centos下的名字,在deb可能是libmysql-dev还是libmysql来着,稍微找一下不?

没必要阻塞,回调就行了。本身就是单进程的东西。阻塞了,其他就不能动了。

@XadillaX linux apt-get install mysql-devel 就好了, windows不知道应该装什么

windows的话我也不清楚,可能是mysql的driver?在mysql官网应该又载的吧,libmysql

@firstgeniusboy 对于每个请求之间用非阻塞,对于每个请求的内部还是用阻塞的流程下来,这就已经非常足够了,不是么?还望解惑

@XadillaX 大并发的东西即使卡住一秒对用户也是影响。传统的相应假如界面卡住5秒不动那么用户体验就已经糟糕了。每个请求可能包含不同的操作。比如文件读写之类,这些都不能不考虑,nodejs 基于异步提供高效。这是他的特点。千万不能轻易尝试阻塞。

回到顶部