想问您个问题哈,为什么nodejs的web开发,很少用到Java Web这样的三层架构Controller,Service,Dao
发布于 6 年前 作者 i5ting 8872 次浏览 来自 分享

占位,稍后作答

17 回复

我nodejs项目我也是controller–>service–>repository 这么玩的呀

我们就是这么做的啊,规范化和方便管理啊

我觉得这个跟框架还是有很大关系,比如认知度比较高的express和koa框架本身没有推荐MVC结构,而是使用了中间件(middleware)。而对比JAVA世界的spring,其本身就提倡使用MVC结构。所以做JAVA开发,跟随spring的框架,自然就搞成了MVC。跟随express自然中间件的思想更多一些。还有就是,具体怎么写还是要看具体的开发人员。所以还是有一使用MVC的nodejs开发。

有同样的问题,特别是在数据库事务方面

@CoderIvan 数据库事务应该是使用mongodb时候需要问的问题,如果使用的mysql就可以使用事务。因为mongodb本身不支持事务。

@kolyjjj

就是使用MySQL

假设一个场景,一个Service使用多个Dao,是不是需要保证几个Dao的执行同时在一个事务内?

在Java中,DAO层是基于“当前线程”保证一个线程中有且只有一个MySQL连接,但在NodeJS中就不好实现了,需要在service层统一管理连接并传递到dao层

untitled1.png

一般node 肯定是跟nosql 绑定的,不需要像java那种ORM框架,所以对dao的操作,全部被直接转变成了基于model 的方法,比如save,upsert等等自带的函数,所以很多框架,比如loopback就直接只要定义好model,就直接可以由框架自动生成对应的restfull 接口,非常方便后台开发,你只需要实现自己的逻辑就行了

node还是需要MVC, 只不过更细小的功能都写成中间件了

我感觉代码是否分层很大的问题是因为需要协作,特别是超过三个人维护一个项目的时候越需要这样,因为这样才不会经常造成代码冲突和混乱的局面。 所以反向推导我觉得可能是如下的一些原因: 一,因为java web本身系统自己出来一层http服务器的处理架构,然后把系统各种配置搞的超级复杂,导致整个在java下面写web好像很复杂的样子。 二,java默认是一个类一个文件,所以会存在很多文件,所以本身就需要把文件分成很多的目录去组织。 三,java写代码啰嗦,导致一个简单的功能需要写的代码量比脚本语言多,同样就需要更多的人来完成项目,所以导致了多人协作的需求 四, 在多人协作的时候,一般需要一个人先把框架搭好,然后其它人在框架下面直接写逻辑,所以分的比较细就是一个被动的需求。

反观使用nodejs的项目,本身node的框架层面不复杂,而且一般项目不大,一个文件里面就可以写很多功能,写起来相对简单不啰嗦,所以需要按照MVC架构去划分的需求就没那么明显了。

QQ截图20160314090003.png看你自己怎么理解和设计

node 没有好的 ide

@CoderIvan

是的,需要层层传递事务conn

app中初始化数据库连接池以后, 这个db是每个model保留一个引用,还是每个service保留一个引用?

收藏功能又回来了!

Java \ .net 属于编译类开发平台, Node.js 属于脚本类的, 当然开发架构不一样啦,不知这样解释对吗

@i5ting 为什么没有发表见解啊。

回到顶部