2022 年 7 月,有哪些 node 后端高可用 web 开源框架?

2022-07-05 19:31:46 +08:00
 Features
最近在学习 srping 和 php
但是我本身是个写前端的,好多前端的 NPM 库不能在后端用
如果后端是 node ,岂不是就能用了?

所以想请教下各位大佬,现在有什么流行的 node web 开源框架吗?
最好有大公司牵头,经过考验的那种
7507 次点击
所在节点    程序员
75 条回复
wellsc
2022-07-05 22:39:27 +08:00
@Features 你高兴就好
ysc3839
2022-07-05 23:47:15 +08:00
Node.js 的 HTTP 框架一般是直接暴露一个 HTTP 服务,不像其他语言或框架是暴露 FastCGI 等,所以不用 nginx 反代也行。但似乎大多数框架都只支持 HTTP/1.1 ,https 支持情况也不好说,一般还是建议加一层反代,这样可以支持 HTTP/2 。
ysc3839
2022-07-05 23:48:46 +08:00
至于后端能不能用某个库,其实得看库依赖啥,有的库只依赖 JS 语言本身的功能,就可以用。有的还依赖浏览器上才有的 Web API ,那后端就不能用。
binhb
2022-07-06 00:21:27 +08:00
springboot 会把人惯坏
ysc3839
2022-07-06 00:26:48 +08:00
> 而 node 需要自己启动一个命令行去执行
只是有人帮你写好了启动脚本,不然你看看 PHP 在 Windows 上能自动启动吗?

> 想要做 HTTPS ,想要托管静态文件等等,肯定还得配置 nginx 之类的 web 服务器
PHP 主流的 FastCGI 模式也需要 nginx 反代
Features
2022-07-06 00:53:57 +08:00
@ysc3839 只是 JAVA 和 PHP 在这方面很完善了,nodejs 确实有很多坑需要自己踩
框架太小众了,网上资料也很少
lzgshsj
2022-07-06 00:54:38 +08:00
nestjs 不用配置 http 接收器啊,默认就是用的 express ,开箱即用
chenzhe
2022-07-06 01:34:08 +08:00
@Features 我的习惯,docker 起一个 nginx-proxy-manager ,然后直接用它图形化的来配置 nginx ,如果不需要做什么特别的设置,直接添加一个 proxy 的域名和 docker 的端口号就可以了。以前有用过 thinkPHP ,那会儿是用的宝塔来配置,感觉操作都差不多。至于说托管静态文件,如果是用 express 写,直接一个 app.use(express.static(文件夹路径))就把静态文件全放出去啦。
dayeye2006199
2022-07-06 02:11:59 +08:00
高可用 和 高性能是不是弄混了?
musi
2022-07-06 07:04:31 +08:00
总结一句话,你作为前端就是对 Node.js 有误解
musi
2022-07-06 07:07:24 +08:00
“而 node 需要自己启动一个命令行去执行”
我就问问 linux 上哪个软件不需要用命令行执行,最多就是别人给你写好了脚本,然后开机自启,你 node npm 上找找不也能找得到,再说现在不都容器化了?
felixcode
2022-07-06 09:01:10 +08:00
有时高可用是看运维能力的,而不是简单的只看框架,最终取决于最短板。
如果 nginx 资料都属于“这类资料在网上就非常稀少”,那最短板就不是框架了。
heng1025
2022-07-06 09:29:20 +08:00
我也是前端,还是选择 spring boot ,无脑开发,守住头发要紧~
RRRoger
2022-07-06 09:49:26 +08:00
express 老牌框架 稳定好用
lujiaosama
2022-07-06 10:07:30 +08:00
选择 spring boot 完全没问题, 不过配置 nginx 反向代理属于基础操作, 而且 nginx 的用途也不仅限于此, 绕不过去的. 这个资料哪里稀少不都烂大街了么. 好几点槽点感觉你是还没有正儿八经的写 web 服务正式上线过.
wu67
2022-07-06 10:10:40 +08:00
koa 过于小, 要各种找额外工具.
nest 实际上就是加了各种约束的 node 写法, 纯前端转过去各种绕不过来
express 上手就来, 写写小项目还是可以的, 临时用来写个接口画前端页面的第一选择
libook
2022-07-06 10:41:28 +08:00
换技术栈,就要抛掉以前其他技术栈的思维定式,否则你会一直觉得用起来很别扭,不如回去用以前的技术栈。

比如以前见过有人来网上问 Java 有没有类似.Net 的框架,后来根据网友的介绍尝试完之后表示“Java 真难用”,实际上 Java 自己有好用的思想、框架以及使用方式,别扭完全是自找的。

现在 Node 开发领域普遍使用微服务架构和云原生部署,搭配 DevOps 、服务治理、SRE 来提高开发效率、运行效率、可用性,框架做的事情反而很少,大多情况下用个 koa 或 express 就能满足需求,个别情况下直接用原生 http 模块手写也很快。

HTTP 协议方面,Nginx 已经是业界事实标准了,而且通常也就是几行配置的事情。你用 Node 是可以做 HTTPS 、托管静态文件的,前者原生模块就能支持,后者框架都有中间件可以一行调用;虽然绝大多语言的原生 API 都可以实现,但性能基本被 Nginx 吊打,除非你愿意花大量没必要的精力去优化。

不管是学 Node 还是学其他什么技术,最好先看官方网站上的教程、API 文档,先了解这项技术能提供什么基础能力;然后去按照自己的原始需求找这个技术栈的最佳实践,看一看有没有比其他技术更满足当前需求的方案。
dabaoziwy
2022-07-06 10:45:14 +08:00
nestjs
cxmokai
2022-07-06 10:46:55 +08:00
研究了一圈还得是 nest
Features
2022-07-06 12:33:10 +08:00
@felixcode 我是说 nginx 和 node 搭配使用的这部分资料
nginx 和 php ,tomcat 搭配的到处都是,甚至官网都有样例

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/864281

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX