nodejs的角色定位
发布于 5 年前 作者 TimLiu1 4540 次浏览 来自 分享

nodejs 在中间层主要是做了两件事

1.转发

转发的话性能和nginx比还是有差距的,当初我们测试代理一个静态文件,并发数和nginx是有差距的,所以这一点不是核心竞争力

2.业务logic处理

现在在创业公司野蛮生长阶段都是nodejs直接做后端,在公司扩张稳定之后便会引用go或则java做基础服务,nodejs做业务层处理,这样做主要是解决以下几个痛点

1.很多基础服务,比如用户模块,组织模块的一些基础方法在多个项目中用到,并且变动小,所以需要用go或则java沉淀出基础层,提高复用性.
2.尽量避免很多node服务和数据库直连,保证数据库的安全性,安全性包括数据安全和性能安全。
3.部分公司用node做数据渲染,缓存,这样可以很大程度的前端体验

3.1 比如后端返回的是json, 然后node把渲染好的页面直接返回给前端,这样能很大程度提高前端的体验 3.2 node 结合redis可以进行某些api数据的缓存,这样提高了api响应速度

4.在复杂的单页面运用中实现路由模块管理

4.1 比如我一个项目有订单模块和产品模块,其实是两个单页,通过访问不同的nodejs路由得到,这样不用一次性全部加载到前端,提高了用户体验

6 回复

也可以往后再下探一些。

比如 阿里现在的 midwayjs 就是想干这个, loopback4 也改了。

随着微服务的普及,node.js 做一些快速开发也不错。

nest.js 相对 spring boot 还是有性能优势(IO密集),开发效率优势,可维护性也好于go 。 随着业务增长,也可以用rust/C++ 写拓展,或者是直接替代相应的容器。 连数据库 typeorm + oracel/postgresql 其实都不差

好处都让你们说完了。 那么我讲个瑕疵吧

可维护性也好于go

@axetroy 估计 @zuohuadong 大佬是站在一个熟悉 node 比熟悉 go 程度高的角度

api 网关的地位比较稳固了,有 ts 的加成,各框架(midway, eggjs, nestjs 等) 再完善些, nodejs生态再 丰富些,随着 k8s 微服务的流行 应该会有更多更广后端份额。

@axetroy 我们主要开发是用的 typescript , go 本身不够面向对象,没泛型、没注解 这些。。。。

@hsiaosiyuan0 typescript 比 go 更面向对象~

回到顶部