首先为什么使用 nodejs?
就像某人说的:别人选择用 nodejs 或 Golang,是根据业务,而我选择 nodejs 是因为我仅仅会写js…
在入坑 nodejs 写后端前,肯定会去谷歌一番 node 的性能咋样啦,类似 nodejs vs php Or vs go 性能测试等;搜索结果呢会有许多说它性能很好的,也有说性能不足php的,而且各自都有自己的性能测试…
然后也会发现很多有趣的便见,下面罗列一下:
一. nodejs 因为 js 这门超级灵活的语言不适合写大型项目
解决方案: 上 typescript
二. nodejs 性能不行,并发上不来,延迟大。这里的性能应该指的是 cpu 密集型计算。
解决方案:水平扩展机器 + 将 cpu 密集型计算放到另一个服务上转化为网络 io 调用啊(具体这个服务怎么写,仁者见仁)
三. 数据库并发上不来。
解决方案:这个和 nodejs 没啥关系吧……
全网搜来搜去,大概就上面的问题。看完,用 nodejs 写后端还是问题么
再来列举 nodejs 写后端的好处吧(仅限于对前端来说) 一. 学习进步,更上一层楼;了解后端,才能更好写前端嘛 二. 给了前端同学一个轻松写后端的机会 三. 前后端类型/代码共享 四. 天然的 web 支持(比如用 websocket 超简单)
总结来说,写后端,如果你熟悉 php,那就 php,听说nodejs 好,噗嗤噗嗤的去学 js,es6, npm,webpack, babel等等的,在没用 nodejs 写业务前,就已经精疲力尽了…
当我说 nodejs 适合写后端的时候,是因为我仅仅会前端。不想去学go写后端,因为在用go写后端前,学习go 已经让我精疲力尽了。
不熟悉才会说不合适,没有绝对的不行,其实都可以解决问题。
中小应用啥语言都行,看团队技术栈以及水平。纯 nodejs 在后期维护上可能麻烦些,上 typescript 就基本解决问题。
我觉得 node 可以作为纯前端出身的程序员入门后端的最佳选择吧 typescript 前后端通写蛮香啊
没错,文章表述有误!
这里的nodejs意思为在 node.js 之上构建后端应用
谢谢 3 楼指正
你说的没错,性能说到底最强就是cpu核数的aio。现在大家都是这个模式,性能差异不大。 接下来就是语言本身了,bs 前端天生javascript,后台我还瞎扯什么,一样的语法不香吗
狼书卷一里都讲了的
但是node的生态真的是个问题,很多东西都没有,还需要不断的完善
说不行的基本是没怎么用过,自己在瞎歪歪。PHP性能好吗?Python性能好吗?不照样开发系统。 黑子喜欢用的套路基本就是: 说性能不好。拿出v8怼回去后又说并发不好,你拿出事件模型怼回去又说类型不好,你拿ts怼回去又说不适合开发大项目,你说任何项目对nodejs来说都是小项目,又说生态不好,你拿npm怼回去又说npm依赖一大堆。。。 你可能听到很多人说nodejs不行,但我告诉你,这是他们心虚,害怕nodejs抢他们饭碗而已
土包子
其实很多连什么是 ” IO 操作“ 弄明白……计算密集型也不知道在crud里哪里体现了。理论上c++扩展 或者wasi 能弥补一些 这种加密计算的不足。
写后端不仅仅是 CRUD,如何多人写好 CRUD也是一门艺术啊……
知乎上看到一句话,写后端需要考虑和研究的东西有很多:
希望以后在 nodejs 社区,看到些更加深入点的这方面的思考和分享
@suhaotian 这个属于(后端)架构,而非后端(服务)。 图片里说的,我感觉要么是老司机,要么是老火车司机。
说个场景, nodejs/go的后端(微)服务,容器化部署时,一个普通云节点起数十个pod没啥问题吧。如果换成是java,能行么。 大家都承认nodejs生态比java差远了。
保持谦卑,真的,后端领域太大了。
@atian25 所以,讨论时需要有个边界、结合业务场景。 不然就会出现上面图片中的情况——换成java或者任何语言一样有同样的问题。
有些地方nodejs的确不错,但还是那句话,没有银弹。
现在很多运维的事情,云都已经做了,都2020年了,谁还在自己做运维? 小公司直接上云,大公司有自己的运维系统 主要是要学习的后端的知识确实很多[手动狗头]
@waitingsong 你节点都没负载吗?没负载你开这么多意义何在?开两个做容灾就好. 负载多了,就node.js的GC水平,还真不一定能比java开得多.
不管用啥,能满足业务就行
@JsonSong89 通常情况下其实差不多。我那个例子只是说说边界场景,比如faas
用node写写内部系统还行,写对外商业系统想想都可怕,只怕是前端在这刷了下简历各种玩一波拍屁股走人之后留下的全是技术债后面的人来填坑,最后搞一波node服务治理
@artisan 语雀就是西湖区最大的 Node.js 全栈应用。 https://www.yuque.com/seeconf/2020/dn74yy