最近在学习 srping 和 php
但是我本身是个写前端的,好多前端的 NPM 库不能在后端用
如果后端是 node ,岂不是就能用了?
所以想请教下各位大佬,现在有什么流行的 node web 开源框架吗?
最好有大公司牵头,经过考验的那种
但是我本身是个写前端的,好多前端的 NPM 库不能在后端用
如果后端是 node ,岂不是就能用了?
所以想请教下各位大佬,现在有什么流行的 node web 开源框架吗?
最好有大公司牵头,经过考验的那种
|
1
|
|
2
nestjs yyds
|
|
shakarakaJul 5, 2022
3
nestjs
|
|
meteor957Jul 5, 2022
4
nest
|
|
5
express 自己手动撸 想怎能搞就怎么搞
|
|
pengtdydJul 5, 2022
6
这个时候就必须安利一波我正在用的 Nestjs 了,底层引擎换成 Fastify 那就是速度和效率的结合,在 node web 领域无人能敌!
可以参考我的项目(在开发中。。。): https://github.com/feiyu-rs/lime-backend |
|
7
我也是是前端 我选择用 rust 撸 web server 🐶
|
|
moxiiJul 5, 2022
8
主要看你打算做到什么程度,基本上 Node 什么都可以做。
1. 常规的 Express, Koa, nest ,typescript-express-starter 2. 微服务有 moleculer, seneca 等等 |
|
awesomesJul 5, 2022
9
nest 不二选择
|
|
putaozhenhaochiJul 5, 2022 via Android
10
nest
国内的 midway |
|
Al0rid4lJul 5, 2022
11
底层点的就 Fastify, 封装比较全的就 Nest
|
|
codingBugJul 5, 2022
12
fastify ,简单易用
|
|
wellscJul 5, 2022
13
高可用和框架关系大吗?
|
|
14
高可用的框架,才疏学浅没听说过
|
|
15
Adonis 比较像 Laravel https://docs.adonisjs.com/guides/context
Express/Koa 太小巧, 要自己找各种库组装配置 不太爽 Nest 太笨重, 感觉不如 Spring Boot Egg/Midway, 阿里 KPI 项目慎重 |
|
16
|
|
JackerissJul 5, 2022 via Android
18
所以哪个框架不是高可用的?
|
|
dorothyRENJul 5, 2022
20
@Features #16 springboot 哪里说自己是高可用的了
|
|
ysc3839Jul 5, 2022 via Android
22
Node.js 的 HTTP 框架一般是直接暴露一个 HTTP 服务,不像其他语言或框架是暴露 FastCGI 等,所以不用 nginx 反代也行。但似乎大多数框架都只支持 HTTP/1.1 ,https 支持情况也不好说,一般还是建议加一层反代,这样可以支持 HTTP/2 。
|
|
ysc3839Jul 5, 2022 via Android
23
至于后端能不能用某个库,其实得看库依赖啥,有的库只依赖 JS 语言本身的功能,就可以用。有的还依赖浏览器上才有的 Web API ,那后端就不能用。
|
|
binhbJul 6, 2022
24
springboot 会把人惯坏
|
|
ysc3839Jul 6, 2022 via Android
25
> 而 node 需要自己启动一个命令行去执行
只是有人帮你写好了启动脚本,不然你看看 PHP 在 Windows 上能自动启动吗? > 想要做 HTTPS ,想要托管静态文件等等,肯定还得配置 nginx 之类的 web 服务器 PHP 主流的 FastCGI 模式也需要 nginx 反代 |
|
hakuya7Jul 6, 2022
27
nestjs 不用配置 http 接收器啊,默认就是用的 express ,开箱即用
|
|
28
@Features 我的习惯,docker 起一个 nginx-proxy-manager ,然后直接用它图形化的来配置 nginx ,如果不需要做什么特别的设置,直接添加一个 proxy 的域名和 docker 的端口号就可以了。以前有用过 thinkPHP ,那会儿是用的宝塔来配置,感觉操作都差不多。至于说托管静态文件,如果是用 express 写,直接一个 app.use(express.static(文件夹路径))就把静态文件全放出去啦。
|
|
dayeye2006199Jul 6, 2022 via Android
29
高可用 和 高性能是不是弄混了?
|
|
30
总结一句话,你作为前端就是对 Node.js 有误解
|
|
31
“而 node 需要自己启动一个命令行去执行”
我就问问 linux 上哪个软件不需要用命令行执行,最多就是别人给你写好了脚本,然后开机自启,你 node npm 上找找不也能找得到,再说现在不都容器化了? |
|
32
有时高可用是看运维能力的,而不是简单的只看框架,最终取决于最短板。
如果 nginx 资料都属于“这类资料在网上就非常稀少”,那最短板就不是框架了。 |
|
heng1025Jul 6, 2022
33
我也是前端,还是选择 spring boot ,无脑开发,守住头发要紧~
|
|
RRRogerJul 6, 2022
34
express 老牌框架 稳定好用
|
|
lujiaosamaJul 6, 2022
35
选择 spring boot 完全没问题, 不过配置 nginx 反向代理属于基础操作, 而且 nginx 的用途也不仅限于此, 绕不过去的. 这个资料哪里稀少不都烂大街了么. 好几点槽点感觉你是还没有正儿八经的写 web 服务正式上线过.
|
|
36
koa 过于小, 要各种找额外工具.
nest 实际上就是加了各种约束的 node 写法, 纯前端转过去各种绕不过来 express 上手就来, 写写小项目还是可以的, 临时用来写个接口画前端页面的第一选择 |
|
37
换技术栈,就要抛掉以前其他技术栈的思维定式,否则你会一直觉得用起来很别扭,不如回去用以前的技术栈。
比如以前见过有人来网上问 Java 有没有类似.Net 的框架,后来根据网友的介绍尝试完之后表示“Java 真难用”,实际上 Java 自己有好用的思想、框架以及使用方式,别扭完全是自找的。 现在 Node 开发领域普遍使用微服务架构和云原生部署,搭配 DevOps 、服务治理、SRE 来提高开发效率、运行效率、可用性,框架做的事情反而很少,大多情况下用个 koa 或 express 就能满足需求,个别情况下直接用原生 http 模块手写也很快。 HTTP 协议方面,Nginx 已经是业界事实标准了,而且通常也就是几行配置的事情。你用 Node 是可以做 HTTPS 、托管静态文件的,前者原生模块就能支持,后者框架都有中间件可以一行调用;虽然绝大多语言的原生 API 都可以实现,但性能基本被 Nginx 吊打,除非你愿意花大量没必要的精力去优化。 不管是学 Node 还是学其他什么技术,最好先看官方网站上的教程、API 文档,先了解这项技术能提供什么基础能力;然后去按照自己的原始需求找这个技术栈的最佳实践,看一看有没有比其他技术更满足当前需求的方案。 |
|
dabaoziwyJul 6, 2022
38
nestjs
|
|
cxmokaiJul 6, 2022
39
研究了一圈还得是 nest
|
|
41
|
|
walpurgisJul 6, 2022
42
springboot 默认不也是内嵌 web 服务器吗,你怎么给 springboot 配 nginx 的就怎么给 node 配,nginx 压根就不关心后面是 java 还是 node
|
|
Trim21Jul 6, 2022 via Android
43
Nginx 跟 node 有啥需要配合的啊,两边都是直接用的 HTTP 协议,不就是 proxy pass 或者 upstream 反代一下吗。反而 PHP 真正要写的那一堆 cgi 配置麻烦多了。
|
|
voneJul 6, 2022
44
“而 node 需要自己启动一个命令行去执行”
https://www.npmjs.com/package/pm2 |
|
shakarakaJul 6, 2022
45
看了第三条附言。
感叹还是过几年再回头看看自己这个问题吧。你会发现你的想法偏得特别离谱。 --------------------- 比如 laravel 基于 lnmp ,有非常完善的配置,甚至一些服务器中能一键搭建 lnmp 环境,而 node 需要自己启动一个命令行去执行 --------------------- php 我不是很熟,但是我记得一般的 php 使用方法都是要 nginx 或者 apache 去转发给 fpm 执行,然后在返回内容, 那么流程就是:nginx -> fpm ,而 node 可以执行一个 js 脚本就能永驻(我记得 php 也可以:php index.php ,但是为什么我见过的框架都不这么用,我没深究)。基于以上才需要 lnmp ,本来这个就不应该存在的。现在容器化时代,这些更是另一个纬度的事了。 --------------------- 想要做 HTTPS ,想要托管静态文件等等,肯定还得配置 nginx 之类的 web 服务器 --------------------- node 可以直接使用 ssl 文件,要个毛线 nginx ? 这年代都是用对象存储存静态文件或者 nginx 去使用静态文件了,你个 node 管好自己的 api 服务就好了,不用操其他的心。 --------------------- 我还是老老实实学习 JAVA 和 PHP 吧,术业有专攻 --------------------- 在以后这个容器化时代,java 有 srping 还不错,php 就等着蛋疼吧。 |
|
terranboyJul 6, 2022
46
nest.js 不是和 spring 挺像的 貌似 LZ 关注的 重点不在这上面 而在服务器环境上? 有点莫名其妙
|
|
FakerLeungJul 6, 2022
48
不如直接上 Saas
|
|
YouMoeYiJul 6, 2022
49
我觉得 OP 现在这个阶段不要过于纠结框架和技术栈的问题
一种后端技术学懂后其他的也能很快上手 就像你会 React 上手 Vue 也很轻松一样 而且只有后端真正学懂了才真正具有挑框架的能力 你现在挑来挑去就有点像只懂一点前端的人问 react 和 vue 哪个好 然后浅浅看了下文档给 React/Vue 挑"毛病"罢了 |
|
weloveJul 6, 2022
50
可以试试 midway ,我用起来感觉还是挺不错的
|
|
liaotuoJul 6, 2022
57
nestjs yyds
|
|
weloveJul 6, 2022
58
midway 的话建议用 sequelize,插件的话就用 sequelize- typescript ,基础的用法 midway 官网里面讲过了,高级一点的用法要你去查 npm 上面的文档的,还得结合 sequelize 官方文档来看,当然你也可以用 midway 推荐的 typeorm ,不过那个我没用过,不知道坑多不多
|
|
SingeeKingJul 6, 2022
59
OP 这思维,应该上 lambda ,啥都不用考虑
举个简单的例子,nextjs 的 _api 下直接写路由处理函数 |
|
XCFOXJul 6, 2022
61
|
|
walpurgisJul 7, 2022
64
原来 OP 说的可用性,是指对于新手的可操作性,而不是 SLA 的那个可用性?
|
|
65
@walpurgis 我说的就是 服务的高可用性,我是评估这个框架,跑起来以后,是否高可用?
在兼顾开发效率的同时,在性能和稳定性上是否足够? 不需要投入过多的运维精力,能得到更高可用的服务,难道不是很好的吗? |
|
hLc1Jul 7, 2022 via Android
66
nestjs 作者不是谷歌的吗?
|
|
walpurgisJul 7, 2022
67
不是我看不起宝塔,不过你拿宝塔作为高可用的例子,是不是搞错了什么
上面大佬都说了,除非有 bug 或漏洞,不然框架跟高可用没什么关系,单机环境也不用讨论高可用,机器出故障的概率都比程序崩溃概率高了 性能方面,laravel 妥妥垫底,不过 OP 肯定碰不到语言层面上的性能问题,可以忽略 部署运维方面,使用傻瓜面板当然觉得 php 简单,而对于习惯用容器部署的人来说,nginx+fpm 体验极差 |
|
68
|
|
frankiesJul 7, 2022 via Android
69
别问,先找个顺眼的框架学起来,你纠结的时间都能学一遍了
|
|
lanlanyeJul 7, 2022
70
怎么这么乱……嫌慢用 rails 啊,可以把 node 嵌进去,你说的 airbnb 也在用
|
|
Macolor21Jul 7, 2022 via iPhone
71
高可用是分布式系统的概念,框架能做但比较少,eureka 说自己是高可用的,意味着你在集群部署的时候注册中心不是强一致性的。
上面一大半都是与高可用话题无关的,这标题取得,讲道理我进来看看多离谱,结果比我想的还离谱 |
|
siweipanccJul 7, 2022 via iPhone
72
……你在想屁吃,这算啥高可用,这叫开箱即用,就算是 Angular 也是勉强一用,还得自己改造
|
|
73
Nest.js 、Next.js 、Nuxt.js 傻傻分不清楚。
|
|
ychostJul 7, 2022
74
koa2 好用,node 千万别去用 Java 那套,真心不适合,Node 写的越简单越好,不需要依赖注入 /ORM/注解,其实 java 的 WebFlux 和 Vert.x 写起来倒是有 Node 的感觉
|
|
CoderLifeJul 7, 2022
75
怎么没有 eggjs
|