Node.js 真的不适合大规模开发吗?

总是听说大公司都是用 Java 的,即使用 Node.js 也是用在偏「前端」。这主要是由于哪些方面的问题呢?不支持多线程?难以多人合作?
关注者
224
被浏览
27,629

节选自狼叔新书,关于Node.js后端开发的章节


一般,后端开发指的是 `Web` 应用开发中和视图渲染无关的部分,但现在架构升级,`Node` 承担了前后端分离重任之后,有了更多玩法。从带视图的传统 `Web应用` 和 `面向Api接口应用`,到通过 `RPC` 调用封装对数据库的操作,到提供前端 `Api` 代理和网关,服务组装等,统称为后端开发,不再是以往只有和数据库打交道的部分才算后端,这样,就可以让前端工程师对开发过程可控,更好的进行调优和性能优化。


对Node.js来说,一直没有在后端取得其合理的占有率。原因很简单


- 1)利益分配,已有实现大多是Java或者其他语言,基本是没法撼动的,重写的成本是巨大的,另外,如果用Node写了,那么那些写Java的人怎么办?抢人饭碗,这是要拼命的。

- 2)Node相对年轻,大家对Node的理解不够,回调和异步流程控制略麻烦,很多架构师都不愿意花时间去学习。尽管在Web应用部分处理起来非常简单高效,但在遇到问题时并不容易排查定位,对开发者水平要求略高。

- 3)开发者技能单一,很多是从前端转过来的,对数据库,架构方面知识欠缺,对系统设计也知之不多,这是很危险的,有种麻杆打狼两头害怕的感觉。

- 4)Node在科普、培训、布道等方面做的并不好,国外使用的非常多,国内却很少人知道,不如某些语言做得好。


了不起是个不能随便说的词儿,对于 Node.js 来说,简化并发编程,用了不起来形容并不过分,在2009年横空出世时,确实是独一无二的。但在今天,已经8岁的 Node.js 有了更多、更为广泛的应用场景,它已经远远大于当初设计时的初衷了,我觉得用更了不起来形容已经不过分了!


不支持多线程?是因为Node帮你做了,你只专注于业务实现就好了,这点上说Node是非常了不起的,你去写写java的多线程就知道有多蛋疼了,node和go其实都在有意削减这块。

难以多人合作?你估计是想说面向对象编程,es6小儿科的oo确实不咋地,可是还有TypeScript啊,es6超集,外加各种oo特性,几乎java有的它都有,作者是安德烈,borland传奇,c#之父,未来前景无限

狼叔一直是坚信Node全栈必将统治大前端!


回复


1)你根本就没有深入使用ts,那段话会打脸

2)如果业务复杂度一样,重构go和js差别有那么大?看熟练程度吧,这话不客观

3)开发时不看gc,上线不做基准,那说明什么呢?


Node适合的是io密集的任务,互联网开发99%都是io密集的任务,所以没有不合适一说。另外微服务架构下,语言是公平的,有什么能力用什么能力,Node后端也必将占有一席之地。