占位,稍后作答
我觉得这个跟框架还是有很大关系,比如认知度比较高的express和koa框架本身没有推荐MVC结构,而是使用了中间件(middleware)。而对比JAVA世界的spring,其本身就提倡使用MVC结构。所以做JAVA开发,跟随spring的框架,自然就搞成了MVC。跟随express自然中间件的思想更多一些。还有就是,具体怎么写还是要看具体的开发人员。所以还是有一使用MVC的nodejs开发。
就是使用MySQL
假设一个场景,一个Service使用多个Dao,是不是需要保证几个Dao的执行同时在一个事务内?
在Java中,DAO层是基于“当前线程”保证一个线程中有且只有一个MySQL连接,但在NodeJS中就不好实现了,需要在service层统一管理连接并传递到dao层
一般node 肯定是跟nosql 绑定的,不需要像java那种ORM框架,所以对dao的操作,全部被直接转变成了基于model 的方法,比如save,upsert等等自带的函数,所以很多框架,比如loopback就直接只要定义好model,就直接可以由框架自动生成对应的restfull 接口,非常方便后台开发,你只需要实现自己的逻辑就行了
我感觉代码是否分层很大的问题是因为需要协作,特别是超过三个人维护一个项目的时候越需要这样,因为这样才不会经常造成代码冲突和混乱的局面。 所以反向推导我觉得可能是如下的一些原因: 一,因为java web本身系统自己出来一层http服务器的处理架构,然后把系统各种配置搞的超级复杂,导致整个在java下面写web好像很复杂的样子。 二,java默认是一个类一个文件,所以会存在很多文件,所以本身就需要把文件分成很多的目录去组织。 三,java写代码啰嗦,导致一个简单的功能需要写的代码量比脚本语言多,同样就需要更多的人来完成项目,所以导致了多人协作的需求 四, 在多人协作的时候,一般需要一个人先把框架搭好,然后其它人在框架下面直接写逻辑,所以分的比较细就是一个被动的需求。
反观使用nodejs的项目,本身node的框架层面不复杂,而且一般项目不大,一个文件里面就可以写很多功能,写起来相对简单不啰嗦,所以需要按照MVC架构去划分的需求就没那么明显了。