轻量级简单Node.js框架SevenzJS
轻量级简单Node.js框架SevenzJS
与其说是一个框架还不如说这是一个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~
今天初步实现了MongoDB的阻塞模式。
因为有时候阻塞模式实在是太常用到了,包括我的这个框架,如果不阻塞的话,内容根本输不出,因为非阻塞那个地方执行完的时候早就已经输出完了。
如果需要用到MongoDB的阻塞模式的话,可以参考下我的代码喔~
今天实现了MySql的shell类。也是同步阻塞模式的。
欢迎fork~
什么东西都阻塞的话, nodejs没有任何的优势, 基本跟坨屎一样, 我基本不用阻塞…
get/post怎么区别呢?
什么意思?
哈 类似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里没有找到关闭日志的选项
如果actions也能象模板那样动态载入,这样就跟php一样了,改了代码就不用重启服务器了
我在这之前玩的是ThinkPHP,所以你懂得-。 -
或者这个东西要你自己再npm一遍?因为貌似他要npm下来之后他自己自动编译一遍的。
-. - 不好意思,没考虑到关闭日志。
对了,你有装mysql-devel么?这个是在centos下的名字,在deb可能是libmysql-dev还是libmysql来着,稍微找一下不?
没必要阻塞,回调就行了。本身就是单进程的东西。阻塞了,其他就不能动了。
windows的话我也不清楚,可能是mysql的driver?在mysql官网应该又载的吧,libmysql
轻量级简单Node.js框架SevenzJS
简介
SevenzJS 是一个非常轻量级且简单的 Node.js 路由框架。它的主要功能是解析路由并执行相应的操作。相比于其他复杂的框架,它更适合用于需要快速实现小型项目的场景。
使用方法
假设你的项目结构如下:
project/
├── actions/
│ └── foo.js
├── server.js
在 actions
目录下创建你的业务逻辑模块,例如 foo.js
,内容如下:
// actions/foo.js
exports.action = function(action) {
var self = { };
var sAction = action;
self["index"] = function() {
sAction.writeHead(200, {'Content-Type': 'text/plain'});
sAction.end('Hello world!');
}
return self;
}
路由解析
在 server.js
中配置路由解析:
const http = require('http');
const fs = require('fs');
const path = require('path');
const server = http.createServer((req, res) => {
const url = req.url.slice(1); // 去掉开头的斜杠
const parts = url.split('/');
if (parts.length < 2) {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Not Found');
return;
}
const moduleName = parts[0];
const functionName = parts[1];
try {
const modulePath = path.join(__dirname, 'actions', `${moduleName}.js`);
const actionModule = require(modulePath);
const actionHandler = actionModule.action(req);
if (actionHandler && actionHandler[functionName]) {
actionHandler[functionName]();
} else {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Function Not Found');
}
} catch (err) {
console.error(err);
res.writeHead(500, {'Content-Type': 'text/plain'});
res.end('Internal Server Error');
}
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
运行方式
- 将上述代码保存为
server.js
。 - 在终端中运行
node server.js
。 - 打开浏览器,访问
http://localhost:3000/foo/index
,即可看到 “Hello world!” 的输出。
总结
SevenzJS 提供了一种简单的方式处理基本的路由请求,非常适合小型项目或快速原型开发。你可以根据需要扩展更多的功能,例如错误处理、日志记录等。希望这对你有所帮助!