nodejs 前后端一把梭的优势在哪?

2021-12-16 00:29:43 +08:00
 rophie123

相比 js+php ,语言都熟悉的前提下,出活快,js 一把梭的优势在哪?真有那么多复用的代码吗?

15999 次点击
所在节点    Node.js
76 条回复
vertigo
2021-12-16 15:45:27 +08:00
js 开发者特点:
大问题没有,小问题不断,js 很容易写出自己的语言风格
所以带来的好处是:
项目质量总体不错,一直出错可以一直维护,项目方找不到能接盘的人只能一直绑定开发

很适合赚钱
7gugu
2021-12-16 16:08:52 +08:00
最大优势就是学了 JS ,就可以通杀前后端,国内外生态也不错,很多轮子可以用,教程也多经验也多。

js+php 当然可以跑,只是用同一门语言没那么多心智负担,比如 php 的变量要加$,js 里面不用,写着写着就很容易把这两者的差异给搞混,都用 js 就不怕了,语言特性是一样的,差别仅仅是存在于 API 上。
badmarillo
2021-12-16 18:55:43 +08:00
上家公司就是全“沾”,技术栈:vue/react + koa + typescript + sequelize
star7th
2021-12-16 19:49:24 +08:00
我几年前前也是 js+php . 但近年来全部换成 js + node 了。优势嘛,就是不用常切换语言,减轻心智负担。另外就是 node 在读数据库 io 方面,由于异步,比 php 要高性能一些
shuimugan
2021-12-16 19:55:19 +08:00
js 一把梭挺爽的,让我告诉你 php 换 nodejs 之后爽在哪里
1.异步 io 性能大幅度提升。很多人说你的项目压根用不到语言的瓶颈,但他们往往说的是计算瓶颈,而不是 io 瓶颈。很多 php 用户没搞清楚“异步里面不能套同步”就上 swoole ,就和很多 python 用户在 tornado/fastapi/asyncio 里用内置 file 等 io 阻塞型函数,java 用户在 netty 里用 jdbc 那样。我测试 8700K [单核心] 空跑 node 的 qps 有 4w ,内存占用 65MB ,这种性能优势随便招个人培训一下随便写都不会差到哪里去。
2.单步调试。说实话很多 php 用户连 xdebug 都没用过几次,echo/vardump 一把梭,更别说在 swoole 里用断点调试了。
3.有很多相似的库。像 Laravel 的框架有 AdonisJS,像 SpringBoot 的框架有 Nest.js,像 Yii2 的 ORM 有 TypeOrm,用 JavaScript 实现的 PHP 函数库有 https://github.com/locutusjs/locutus (注意不要用 io 相关和加密相关的,是阻塞实现)。
4.代码复用。很多逻辑判定的代码可以复用,不过要在编码过程中注意调用环境,函数最好是无运行环境依赖的。
5.服务端打包。node.js 打包是非常多的人忽略的,包括各路 serverless 厂商。大家认为有 docker 就不需要打包了,但是 nodejs 是可以直接打成二进制的。比如 https://github.com/vercel/pkg 这个库可以把 nodejs 项目打包成二进制,然后可以直接在服务器上运行(这一点和 go 、.net 的特性一致了,还用啥 go )。实测一个没有使用.node 扩展的 300MB+的项目打成二进制才 40MB 出头,tar.gz 后大概在 20MB 。做 docker alpine 镜像也就加多几 MB 。

很多人说运维的问题,但我觉得未来属于 serverless ,而且现在各家 serverless 都支持跑 docker 镜像了。前后端都用 js ,服务部署上云,真的是连运维都不用,服务器维护都免了。我上家一年在公有云消费几千万,资源利用率才 30%多,各种 java 应用在上面跑,都是 io 密集型应用,还有为了高可用应用实例最低都是 2 个节点的,要是能改 serverless 架构一年能省千万级的费用。如果你的应用冷启动都是毫秒级,实际上 0 应用实例就可以做到高可用了,无论是做 saas 还是丢给客户在公有云部署,都是极大的优势。
rophie123
2021-12-16 20:10:34 +08:00
@shuimugan 感谢,推荐个框架呗
shuimugan
2021-12-16 20:38:48 +08:00
@rophie123 directus + nest.js 具体理由一图流:

![1.png]( https://s2.loli.net/2021/12/16/S2zckoYvWFO75eG.png)
zhennann
2021-12-16 20:44:55 +08:00
事实 1:大多数类似 vue admin 的 UI 框架都是为 pc 端定制,mobile 端可用但不好用
事实 2:大多数 node 项目都是 crud 和工具类应用,没有好用的工作流引擎
因此,强烈建议使用 CabloyJS ,解决了上述两个问题,而且还有大量丰富的工具和组件,将低代码的开箱即用和专业代码的灵活定制,有机的结合了起来
眼见为实,在线演示: https://test.cabloy.com/
分别使用 PC 和手机浏览该网页,体验与众不同的 pc=mobile+pad 自适应布局
byte10
2021-12-16 21:09:03 +08:00
@shuimugan 我靠,很多 java 用户在 netty 里用 jdbc 那样,你这个经典。也有很多 webflux 项目也是有同步代码,我直接挖槽,太多土鸡了。还有另外一些奇葩 @async 后 直接 get ()进行阻塞获取,太蠢货。哎。serverless 还是不错,小程序这方面就很好用,运维对于中小公司确实挺大的负担的。
fkdog
2021-12-17 09:14:30 +08:00
nodejs 前边几年吹的很厉害,前后端一把梭。
经过几年时间的检验,nodejs 在后端届并没有展现出杀手级的应用,反而还被异军突起的 go 和 k8s 杀了一道。
现在 nodejs 基本已经沦落为用来 js 打包、本地 webpack 调试一类的支持工具了。。。
zhennann
2021-12-17 10:18:35 +08:00
@fkdog 你说的是现实。前几年,nodejs 炒作来炒作去,还不是工具层、代理层,网上大多数知识也只是在玩具的层面翻来覆去的 copy 。所以,我花了几年时间做了一款 node 全栈开源框架:CabloyJS 。内置工作流引擎,全新的 UI 布局风格,希望能为 node 生态添砖加瓦。
imruxin
2021-12-17 17:20:37 +08:00
前后端都分离了,至于后端用 PHP 还是 node 看公司团队跟技术栈熟悉程度咯。PHP 能实现的,node 也能实现。不过大型项目用 node 的好像不多,中小型的项目用 node 还是挺多的。
rophie123
2021-12-17 17:33:26 +08:00
@imruxin 没有公司和团队,一直说的就是个人,不争论语言,就是比出活优势,没优势就继续 php
hutoer
2021-12-17 19:50:33 +08:00
php 貌似漏洞特别多,当然我的观念还在 php5 的时代,很久没碰 php 了
用 nodejs 的话,php 漏洞的问题解决了,算不算优势?
rophie123
2021-12-17 22:27:31 +08:00
@hutoer 漏洞根本用不上吧,从没遇到过,自由职业+兼职外包
7086cmd
2022-02-20 12:47:06 +08:00
单纯靠我的看法来讲,……
1. 前后端语法相同,出现了 Bug 可以很好地定位,并且可以提出方案(运营方面)
2. Node.js 有很多的轮子,在必要的时候可以帮助一把
3. 前后端可以统一配置统一使用,测试方便
4. 若使用 TypeScript ,前后端可以使用自动补全,即使是 API
5. Node.js 不会有 PHP 那么样直接跑源码等的性能问题和源码泄露(我觉得

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

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

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

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

© 2021 V2EX