#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
just do it
本身不就是这样吗
express 就有mvc的感觉呀
@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的,非常不利于学习和使用。
@chenrihong 请看下我回复 @freew01f 的那个内容,简单对比了下 :)
@ravenwang 谢谢鼓励,已经开始做了 :)
koa 难道做的不够好?
@jeremy16601 谢谢你,我刚知道还有 koa,我以为只有 express, 囧了~
@jeremy16601 花了点时间看了下 koa 文档和简单瞄了下源码,确实是比 express 好很多,竟然也是 express 团队做的~~
- koa 使用的 yield 关键字实在太 cooool 了,相比之下的 callback 只要层次多了,真是不好控制。
- 就像我上面回复 @freew01f 的第 5 点那样,koa 不再使用继承 nodejs 对象了,也是采用包装,想法一致了 :)
- 代码层次清晰了很多,采用公开 hander 的方式来拦截处理原生请求,这一点也和我的想法一致了 :)
- 高度的简洁,没有加入其他中间件,没有路由,没有视图引擎等等必备的东西,这可能是它的优点也是缺点。
- 总的来说 koa 给我的感觉不错,应该还有其他我还没有发现的亮点。
哈哈 !同是KOA粉丝 看完KOA 我果断放弃ASP.NET MVC 看来express诱惑力不大
@freew01f 总的来说koa真的不错,有很多值得学习的地方,不过koa目前比较像是个底层类库,不像框架,这给开发带来一定的麻烦
我的 nodejs MVC 终于发布了,求大神们star,求大神们fork,求各位大神拍砖。 https://www.npmjs.org/package/cat-mvc
这效率这执行力,赞!
赞,计划做下贡献,等你把文档写好了,我把它翻译成中文 :D
我也有这个打算, 楼主已经做了啊
赞起! 需要更多这样的大神 推动nodejs发展
没人推荐sails么,多好用的框架
@ravenwang 谢谢,刚好这段时间项目有空档,比较有时间做自己的东西:)
@Hi-Rube OK太好了,代码都差不多了,文档很头痛,不好组织
@slightboy 求试用看看,给提点意见或建议
@jeremy16601 nodejs我是刚接触,一起学习进步
@lzyzsd 不懂这个,来去看看 sails :)