卡卷网
当前位置:卡卷网 / 每日看点 / 正文

为什么说Node.js有望超越Ja?

作者:卡卷网发布时间:2025-01-02 13:33浏览数量:68次评论数量:0次

20年前就开始用ja做项目了,6,7年前改用了Node。最近对springoot的体系和Nodejs做了一个对,感觉springoot就是因为ja的强类型特征,给自己附加了很呆板的,然后有搞了一堆概念,例如反射,工厂,泛型什么的去突破这个,在语言层面上是全面落后于Nodejs的,Nodejs是一个灵活的武器,对标业务需求快速开发就行了,语言本身带来的问题很少。

目前做的看,例如数据库的事务处理,springoot和Nodejs的Koa在同等的事务要求下,性能基本是相当的(本地mysql,事务包括作一个自增表,然后生成随机用户,再到一个表中,都启动事务锁定),基本都是20ms左右响应完成。

整体springoot的开发过程都是较缓慢,多余的代码也很多,最搞笑的地方是,如果编译器和IDE知道改成什么样子就可以的话,为什么还有费用改成那个样子呢?这不就是让人去服务机器吗?

例如最近也加入var的声明方式了,感觉Ja这边也慢慢在醒悟了。

除了Ja较繁琐外,整体语法过程逻辑其实差距到不到。

不过Nodejs特别的方便的地方有以下几点。

1,Json作太方便了,完全吊打Ja,短期Ja因为类型的要求估计无法实现。

2,数据库作,Node出来的结果按Json直接作就行,无需做什么ean,也不用一个一个的get去取值。这个对于数据库作较多和较灵活的地方特别方便。

3,写sql方便,最近Ja也有“”“这个文字块的作了,但对Node还是缺乏一些优雅。尤其node是支持“和’的,为啥方便呢?因为可以根据你作的对象场景切换,尤其sql里面。

4,npm包亲和力和便利性Men的库体系方便,不用到POM里面写一堆,package.json里面写上名字就行,而且npm的官网上查找包的时候也方便,而已例子都给的很好。

5,由于没有编译等过程,Nodejs的开发调试过程很顺畅。Ja常有的需要clean好几次的问题,Nodejs是没有的。

6,Node对于数组,对象属性的作对Ja都方便太多,基本上依据直觉都可以写,不需要啰哩啰嗦的写一个一个的类。

7,Springoot自带Tomcat作为运行容器,node本身作为运行时基本相当,但是如果通过PM2运行一个集群,可以在1台设备上实现生产的效果,如何前面配合Nginx的话基本可以替代Springcloud。

8,对Mongod,redis作什么的,语法层面都是较方便的,Springoot下也还可以,需要定制的地方已经写ean映射什么的还是很烦人的。

综合看,如果是新公司没有什么历史资产和开发人员的技术的问题,还是直接上node吧,目前这么多年的经验看是没有任何问题的。

Ja这一套对于开发人员能力本身不足,需要按一个套路和模板开发的情况下,大量的快速培训开发人员可能会有一定的帮助。如果用node的话,设置好开发规模也可以达到一样效果,但由于node确实是非常的灵活,如果开发人员本身的技能不足的话,可能会出现一些偏差,所以代码还是最好要review一下。

最大的好处应该是前后端都可以一个班子开发了,当然,前端侧重效果的地方还是需要一个专业的前端团队。

补充一些对。

目前Springoot的很多特性其实在Node的架构里面也是可以对照的。

如,IOC,在node里面本身不需new对象的方式(个别处理数据是需要的),此外例如连接池什么的都放到gloal的下面就好了,需要用的时候直接使用,很直观.

AOP的概念在node里面就中间件,不过也可以自己按注解的方式去实现一个node版的注解,我自己写了几个,主要用着接口的log,权限什么的。在处理过程中没有去做这样的包装,感觉概念太大影响了逻辑本身的思考过程。尤其是事务处理,希望开发的人非常明确的去启动事务,而且要清楚为什么这里要启动事务。而ORM这样的东西早在十几年前我就弃用了,这东西在有一个很强的DA团队再分工的情况下还可以用一下,多数情况下都是自娱自乐的,sql已经很简单了,ER图都不清楚的话最好不要写后端代码。myaits还是可以的,不过基本实现情况和node很像了。

id=++rows[0].id constnewdata=[id,''] sql=` updatedata.num setid=? wherename=? ` awaittran.update(sql,newdata)

对照上面是node的代码。

springoot的实现是这样

@Update(""" updatedata.numsetid=#{id} wherename=#{name} """) IntegerupdateId(Integerid,Stringname);

方便程度差不多,不过由于上面又一次的包装了注解,感觉还是node的版本自由度更大。

如果处理返回结果,node的架构就更是无敌了,可以把查询结果直接使用,中间不用再去申明一个record或者ean处理。

letsql=` selectidfromdata.numwherename=?forupdate ` constrows=awaittran.query(sql,['']) id=++rows[0].id

我的感觉Ja这边很喜欢发明概念,体系太庞杂,如同唱京剧,一堆要讲究的东西,其实效果也就那么回事,Node就像流行音乐,你可以有自己的章法,好听就行了。

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

评论 打赏
卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

相关推荐

欢迎 发表评论:

请填写验证码