#asp.net mvc 风格的 nodejs mvc 我以前从事很多 asp.net mvc 的项目,最近开始用 nodejs,看了 express,很简单很好入手,但是感觉不够强大,也或许是因为我还没有完全掌握 express,不管怎么样,不过我就是很想能有一个更适合自己的 mvc 框架,但是一直找不到,于是我决定用闲暇时间写一个类似 asp.net mvc 风格的 nodejs mvc 框架。
将会使用一样的层次划分:Area -> Controller -> Action
这是一个 controller.js 的例子:
var mvc = require('xxxx/mvc');
mvc.controller(function(req, res, end) {
this.action('index', function() {
end.redirectToAction('test','home', { id: 1 });
});
this.action('test', function(id) {
end.view({ id: id });
});
});
有人感兴趣吗? 求提各种意见~~~~
#2014.8.18新增 我的 nodejs MVC 终于发布了,求大神们star,求大神们fork,求各位大神拍砖。 https://www.npmjs.org/package/cat-mvc https://github.com/jszoo/cat-mvc
22 回复
@freew01f 诚然功能上表面上看差不多,但实际还是不一样的,
- asp.net风格的mvc依靠代码文件的分割,达到自动路由的功能,这个比起express中要定义一串的url pattern优雅。
- 自动的数据注入。你可以看到action方法上得参数,那是可以自动注入的(支持对象注入),比起express要从param里只能取字符串也更优雅+方便。
- 更直观的mvc结构。controllers+views+areas(可惜这里不能贴图,不然可以截图),而不是express routes+views,(express中 controller 和 route 绞在一起了)。
- 同一站点同时支持多种视图引擎。貌似express只支持一种,我的这个mvc计划会支持的。
- 更少的代码入侵。我会采用包装 nodejs 对象的方式,我看了express 的代码,基本是采用继承 nodejs 的对象,然后加了各种对象,各种方法,实在让人混淆,不知道哪个是原生的,哪个是express的,非常不利于学习和使用。
@jeremy16601 花了点时间看了下 koa 文档和简单瞄了下源码,确实是比 express 好很多,竟然也是 express 团队做的~~
- koa 使用的 yield 关键字实在太 cooool 了,相比之下的 callback 只要层次多了,真是不好控制。
- 就像我上面回复 @freew01f 的第 5 点那样,koa 不再使用继承 nodejs 对象了,也是采用包装,想法一致了 :)
- 代码层次清晰了很多,采用公开 hander 的方式来拦截处理原生请求,这一点也和我的想法一致了 :)
- 高度的简洁,没有加入其他中间件,没有路由,没有视图引擎等等必备的东西,这可能是它的优点也是缺点。
- 总的来说 koa 给我的感觉不错,应该还有其他我还没有发现的亮点。