最近玩儿弄了下 koa, 用着还是挺香的,直聘上搜了下,貌似后端的 jd 上很少有对 node 的需求,无外乎 java,php,Python,go 。
那么问题来了,node 只是前端构建工具用的多吗?
1
ysc3839 2020-12-15 19:18:14 +08:00 via Android
估计是性能问题+出现时间短。
Java, PHP, Python 都有 20 年以上的历史了,生态丰富。Golang 虽然出现晚但是性能比 Node.js 好。 |
2
wnpllrzodiac 2020-12-15 19:20:39 +08:00 via Android
异步回掉,结构会垮掉。太难了
|
3
Elethom 2020-12-15 19:24:08 +08:00 via iPhone
现在有哪个写后端的没用过 node 吗?
|
4
crclz 2020-12-15 19:25:48 +08:00 1
node 写后端不是折磨?有好的东西不用
|
5
guiling 2020-12-15 19:30:24 +08:00 via Android
express,koa,egg,nest 都用过,目前都是 nestjs
语言不重要,会啥用啥,生态都挺全的 |
6
anjianshi 2020-12-15 19:39:07 +08:00 2
java: 配套完善,从业者众多,编译型语言
PHP: 配套完善,从业者众多,短平快,虽然是脚本语言但有多年业界经验积累 Python: 配套完善,虽然是脚本语言,但语言规范性较 PHP 和 Js 更好一点(用 Python 做后端应该也不多) Go: 配套一般,但同时兼具编译型语言的安全性和脚本语言较快的开发速度,且性能不错 Node.js: 配套一般,脚本语言,且出来的晚,没有很完善的业界积累,不敢大规模用到核心业务。 |
7
fescover 2020-12-15 19:40:35 +08:00 4
几个大项目,node_modules 都能塞满服务器
|
8
gouflv 2020-12-15 19:42:50 +08:00 via iPhone 1
真正的 nodejs 程序员都在阿里和字节
|
9
6IbA2bj5ip3tK49j 2020-12-15 19:44:57 +08:00
现在的项目在用 nestjs+typescript
活脱脱一个丐中丐中丐版的 Spring Boot,跟 Java 相比,看不到任何优势。 |
10
EPr2hh6LADQWqRVH 2020-12-15 19:45:09 +08:00 1
Java 太卷,PHP 是真不行,Python 性能大问题,Golang 21 世纪 PHP,
光 JS 自己是远远不够的,还需要 TypeScript 和多方生态外部加持。 全流程统一语言,降本增效,老板之友。 但对全流程一知半解的还是别轻易搞了,到时候资料都不知道咋搜 |
11
hantsy 2020-12-15 19:48:20 +08:00
我用我写 Java 的经历写了一个 nestjs 例子,https://github.com/hantsy/nestjs-sample 分支记录文档的步骤。
|
12
ben1024 2020-12-15 19:48:35 +08:00
有个项目用的 Node,出问题都硬撸,人才还是少
|
13
KuroNekoFan 2020-12-15 19:49:49 +08:00 via iPhone
@xgfan 我也很好奇 nestjs 的竞争力在哪,如果说想搞出一个翻版 spring,那为什么不直接上 spring……
|
14
hantsy 2020-12-15 19:51:54 +08:00
|
15
6IbA2bj5ip3tK49j 2020-12-15 19:54:12 +08:00
@KuroNekoFan “前端大佬”会,上了 nestjs,可以增加自己影响力 /KPI 。
|
16
kenshinhu 2020-12-15 19:58:08 +08:00
都长期写 node 了,深感体系没有 java 健全
|
17
hantsy 2020-12-15 20:01:24 +08:00
@xgfan NestJS 对于 OOP 特别 是 Java 程序员更友好,毕竟后端的生态圈子,换了一门语法或者框架,一样可以轻松套上去用。至于前端,如果不懂 OOP,Nestjs 也写不了,前后通用的东西太少了,除了语言本身。
|
18
IssacTomatoTan 2020-12-15 20:02:42 +08:00 via Android 1
node 做内部项目挺好的 贼快试错成本低 但是不建议对外输出 除非你家有足够积累
|
19
6IbA2bj5ip3tK49j 2020-12-15 20:13:21 +08:00
@hantsy 你这段回复,解释了为啥 nestjs 要照着 spring 。
但是没有解释 “ nestjs 的竞争力在哪,如果说想搞出一个翻版 spring,那为什么不直接上 spring……” -------------------------------- @IssacTomatoTan 现在写 hello world 的玩具,各个语言都没有太大差别。 |
20
golangLover 2020-12-15 20:15:06 +08:00 via Android
大家觉得配套不完善的有例子吗
|
21
Lemeng 2020-12-15 20:17:47 +08:00
为啥用它呢
|
22
ShadowPower 2020-12-15 20:17:48 +08:00
node.js 的数据库驱动有好多坑,数字类型会丢精度
只有 MySQL 的驱动能配置以字符串类型返回数字…… |
23
hanxu317138 2020-12-15 20:20:12 +08:00
性能不够, 机子来凑~~~
|
24
wellhome 2020-12-15 20:20:14 +08:00
听各位的意思,deno 也不值得投入精力去学了?
|
25
KuroNekoFan 2020-12-15 20:20:41 +08:00
@xgfan 我的理解是,纯前端,其实是能力是十分受限的,理想的情况是前端+一个很轻的 web 后端,这种'很轻的后端',express 应该足够胜任。
至于比较重的后端,我也没什么发言权,就不多说了 |
26
wellhome 2020-12-15 20:21:00 +08:00
那个人小项目, 后端到底用啥呢?
不喜欢 java 。太重, 除了 java 也没啥用了 |
27
hantsy 2020-12-15 20:22:16 +08:00
@xgfan 对于熟悉 Node 环境的人,之前有 Express 和 TypeScript 经验,现在有一个 Nestjs 框架能够提供各种服务的集成,可以像 Spring 那样简化开发流程,为什么要用不熟悉的 Spring ?
|
28
hantsy 2020-12-15 20:25:07 +08:00
@ShadowPower 你用的什么数据库驱动或者框架?
Nestjs 中使用 Mongoose 操作 Mongo,我反而觉得 OOP 是一种束缚了,之前我写过一个项目,感觉 JS 调用 Mongoose 真的不错。 |
29
6IbA2bj5ip3tK49j 2020-12-15 20:27:49 +08:00
@hantsy 那就是会 node,不会 java 的人,选 nestjs 嘛。
那你前面说的“NestJS 对于 OOP 特别 是 Java 程序员更友好,毕竟后端的生态圈子,换了一门语法或者框架,一样可以轻松套上去用。”有屁用? |
30
fxjson OP 没有用 koa 的?支持 async,await,再也不用写回调了
|
31
6IbA2bj5ip3tK49j 2020-12-15 20:34:26 +08:00
@golangLover 我随便说两个吧
1.如果要在 nestjs 前面加一个层(不同语言可能叫法不一样,filter/interceptor/middleware )来做签名验证。nestjs 是拿不到 raw request body 的,只能拿到自作聪明 parse 过的 body 。 2.默认的 json parser 有精度问题。 |
33
Kasumi20 2020-12-15 21:21:21 +08:00
不会吧不会吧, 不会真有人以为 JavaScript 就靠前端成为世界上用户最多的语言吧
|
34
fatigue 2020-12-15 21:39:06 +08:00
我知道的,有手机游戏服务器是用 nodejs 的,还行
|
35
SwainWong93 2020-12-15 21:40:54 +08:00
@gouflv 是因为场景吗? Node.js 做中台天然优势?
|
37
maichael 2020-12-15 21:44:32 +08:00
后端是之前几年流行”全栈”这个概念的时候,node.js 招的比较多。
这玩意的尴尬点在于: 1. 不好招人,会写 JS,不代表就会后端,比起招 Java 后端、Go 后端,合格的 Node.js 后端要更难找。 2. 性能不行,或者说在大多数场景下性能都不太行。 中大型公司可能有些部门的有些产品会用到,但占比比较小,外包公司基本用 Java,初创型公司现在首选都是 Golang 或者 Java 。现在还有用 Node.js 基本都是前几年看 Node.js 火热选了的,船大难调头,还有一小部分是真的有自己技术积累的,不过真的很少。 |
38
JerryCha 2020-12-15 22:45:28 +08:00 13
一年以后,你的硬盘被 node_modules 塞满,弄出了 Google 级的故障
|
39
jmyz0455 2020-12-15 22:45:49 +08:00
观望 golang
|
40
dream4ever 2020-12-15 22:55:01 +08:00
在传统企业做“全干工程师”,能力 + 精力有限,所以目前的业务,后端用的全是 Node.js ,倒是在考虑学习 Java,毕竟生态非常全面。
|
41
kidlj 2020-12-15 22:57:47 +08:00
Node.js 性能很好的好吧!( IO 密集型限定)
|
42
imgbed 2020-12-15 23:16:33 +08:00
用 uni-app 的 uniCloud,也算是 node 吧
|
43
vision1900 2020-12-15 23:24:41 +08:00
用 Swift 写的服务端框架,将近两万颗星。Node 就更多了
|
44
lihongming 2020-12-15 23:54:42 +08:00 via iPhone 7
Node 是给“大前端”用的,前端不仅要负责界面,还要自己负责组装数据,自己写 API 。
相应的,后端也会比以前更靠后,要为“大前端”写供 Node 使用的底层 API,比如搜索服务、数据库服务等。基本的 CRUD 操作已经不是后端的事了,后端写的是 CRUD 请求和数据库之间的中间层。显然这对前后端的要求都变高了,一般的企业不太容易招到这样的人才。 |
45
mywaiting 2020-12-16 00:21:25 +08:00
认真说,心智负担低点的全栈选手,JS/NodeJS/Deno 还真是最好选择~~
|
46
anguiao 2020-12-16 00:42:32 +08:00 via Android
就算是全干,估计也没多少人选 Node,毕竟写后端的难点并不在于多学一门语言。
|
47
BruceLi 2020-12-16 00:49:37 +08:00
我们产品想招一个 node 后端太难了,开发物联网云端服务,面试了很多,都是擅长前端,后端基础不行,坐标西安,年底想换工作的私聊。
|
48
dayeye2006199 2020-12-16 02:18:17 +08:00
@wellhome python 的 django flask 糙快猛不香么
|
49
sslyxhz 2020-12-16 02:48:59 +08:00
部分后端小项目用到...大工程还是 Java
|
50
henryhu 2020-12-16 06:04:04 +08:00
nodejs 不香吗?
|
51
kevinwan 2020-12-16 06:19:29 +08:00 via iPhone 1
我们在疫情初期,一个同事用 nodejs 写了个服务,上去第一天就挂了,服务再也没起来过,请求量太大,然后 k8s 伸缩都来不及,超级吃内存
立马改成 go 重写了,再也没出过问题,然后我在公司内禁止了使用 nodejs,别喷,可能我们在 nodejs 上能力不够,但我只是描述了下事实 同时我们在 go 上有深入的积累,自研了框架 https://github.com/tal-tech/go-zero |
52
zjsxwc 2020-12-16 07:27:15 +08:00 via Android
node 只适合中台,
光 node 原生不支持 int64 大整数, 这条就只能放弃 node 了。 |
53
ragnaroks 2020-12-16 08:42:29 +08:00
有个二维码服务用了 node.js ,请求频率也就一天几十万次,1t2g 有点吃力,后面改成 dotnet core 没管过了
|
54
galikeoy 2020-12-16 08:54:00 +08:00
@ShadowPower #22 如果是浮点运算丢失精度这个怪不得 js 。。。
|
55
light000 2020-12-16 08:54:16 +08:00 via Android 1
用 node-red 做,有没有一样的大佬
|
56
baleeny 2020-12-16 08:57:39 +08:00
感觉中小型后端 node.js 很香啊
|
57
unclemcz 2020-12-16 09:02:58 +08:00 1
js 的性能还可以的,我学习 node 入门的时候建了一个小站,使用 expressjs,到现在已经平稳运行 4 年多,日均 pv15k,uv3k,服务器性能 1u1g,cpu 长期处于低位。
优点:性能不弱鸡,开发效率与 php 比不遑多让。 缺点:弱类型,需要约束自己的编码习惯,ts 更优。 |
58
wangyzj 2020-12-16 09:08:35 +08:00
当前端程序员想玩大前端的时候
|
59
zengming00 2020-12-16 09:09:52 +08:00
感觉你们觉得 node 不行的都还在使用连 promise 都还没有的时代的 node 技术,node 写后端确实比其它古老技术的少,因此导致网上没什么教程,即使有,那也是古老得不行的教程
|
60
pushback 2020-12-16 09:20:18 +08:00
只要你问,那就挺多(狗头)
|
61
ericgui 2020-12-16 09:21:54 +08:00 via Android
nodejs 挺好,你的 PV 在 100 万以内的时候,不用考虑那么多
|
62
zqjnew 2020-12-16 09:22:43 +08:00 via Android
单编程来说, 除了会 node 这种动态语言,还要会静态语言,即函数式编程思想 和 oop 编程思想都要有
|
63
huabinglan 2020-12-16 09:25:33 +08:00 via Android
和编译型比性能,把 nodejs 用到 CPU 密集型场景,忽略 npm 生态,好吧,我认输
|
64
mritd 2020-12-16 09:27:43 +08:00 via iPhone
我觉得 node 这东西就不该存在,我也不知道为啥😂
|
65
dartabe 2020-12-16 09:28:21 +08:00
Typescript + Express 感觉挺适合前端拓展一下的 反正我肯定加入自己技术栈
|
67
moonrailgun 2020-12-16 09:29:58 +08:00
我的后端项目: https://github.com/TRPGEngine/Server
Node 给我的感觉就是内存消耗有点大,其他感觉还行。但是如果是一个性能要求比较高的应用的话,还是不要选择 Node, Java 才是你最好的选择 |
69
CFM880 2020-12-16 09:34:38 +08:00
我司 Node 转 Java 中,Node 后端,貌似不好招人
|
70
supuwoerc 2020-12-16 09:37:57 +08:00
我一个前端,帮运维写过 Node 脚本来刷数据...
|
71
alan0liang 2020-12-16 09:42:29 +08:00 via Android
Node 性能并不是很差: https://www.techempower.com/benchmarks/ Koa rank #244, Spring rank #284 ; https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/javascript.html,当然跟 C 的性能还是没法比。主要是内存占用有点大,可能需要手动调一些 v8 参数。
|
72
dany813 2020-12-16 09:43:02 +08:00
为啥要限定一种语言呢,前端想玩后端,node 是首选,想再深入后端,可以再用 java go
|
74
Jinnn 2020-12-16 09:50:44 +08:00
前端在学 nest, 作为前端学习后端的过渡, 对于后端没经验前端来说, nestjs 太适合学习了
|
75
rodrick 2020-12-16 09:52:26 +08:00 1
对于专业后端,java go 肯定比 node 优先级高,对于专业前端,项目需要倒腾后端,选 node 上手成本低,优先级肯定也高,抛开场合谈这些没啥用
|
76
kamilic 2020-12-16 09:53:56 +08:00
起码 Typescript 要上 要不然就吃屎了 亲身经历 T T
|
77
Vegetable 2020-12-16 09:54:34 +08:00
因为写后端的没人只会 node,而选型的时候 node 完全没有优势,说实话我宁可选 php...
个人并不信任自己写出来的 js 代码,ts 又有点麻烦。应该是是 node 在后端届的确没有足够的声望。 |
78
Inozo 2020-12-16 09:57:40 +08:00
从 php 切到 nestjs,node+ts 无论是开发速度还是质量都很美丽
|
79
hyyou2010 2020-12-16 09:59:30 +08:00
浏览过国外小创业公司的技术栈,react+nodejs 算是一个常见组合
|
80
zy445566 2020-12-16 10:06:49 +08:00 8
我就是专职 Node.js 后端,上面一看就知道 95%是都没做过专职 Node.js 后端。
实话就是:Node.js 超级好用,做后端超级爽,这几年 JS 一年一个样,越用越爽。生态也很好,基本要什么功能都有 npm 包,node.js 这几年提升也超级大,不可同日而语了。还有就是有一个错误的观点说用其它语言写的组件,我觉得用其它语言的组件也没啥,java 也用 c++写的 mysql 啊,现在组件都支持通讯了,还跟语言挂啥钩。 还有你如果要问真正的 node.js 开发,最好在技术版块 node.js 模块发帖。程序员这个板块太大了,基本都是没开发过 node.js ,都是听别人说什么就是什么的。 |
81
Phariel 2020-12-16 10:07:38 +08:00 via iPhone
TypeScript 才是业界希望🐶
|
82
component 2020-12-16 10:13:11 +08:00 1
部门自建 serverless,几乎所有人都会用到 nodejs 写接口
|
83
shunia 2020-12-16 10:14:46 +08:00
@alan0liang #71 你看差了吧,koa 好像是 300 多名,你发的这个是数据库组件的排名
|
84
starkwang 2020-12-16 10:29:58 +08:00 4
坐标鹅厂,每天日调用接近 10 亿的服务就是拿 Node 写的,顶峰 qps 几万是毫无压力的。
为啥要 Node 而不是其它语言?因为这是“接入层”,和前端逻辑密切相关的,一套逻辑分成前端后台两个人写,效率极低;会写 go 、java 的专业前端工程师太难招。 当然,这种做法并不适合小公司,国内前端很多,但优秀的能抗住业务的 Node.js 工程师很少,这些人都集中在大厂,不少人在前端圈子都是大佬级别。 |
85
biguokang 2020-12-16 10:30:25 +08:00 1
这个要看你是用 node 写什么了。。。
如果是写和数据库进行 curd 的那种常规 web 后端,其实和其他传统后端语言相比真的没什么优势。 如果是写高并发、I/O 密集型的服务中间件什么的,node 还是很香的。 而且由于 node 得益于 Google 的 JavaScript 引擎 Just In Time 的特性,所以 node 在冷启动方面速度是最快的,所以现在的 serverless,最适合的开发语言就是 node.js ,现在很多云平台的 serverless 服务的开发语言是优先 node |
86
leekafai 2020-12-16 10:32:55 +08:00
所以有些人一开口就是不行不好,回复之前至少说说自己写了几年 node 后端吧
五年 node 开发,node 真的过了好多个坎才走到今天这么好用,4-> 6,6 -> 8,8 -> 12,12 -> 14,给我的感觉就是要写的代码越来越少,心智负担是在下降的,我觉得很好。 网关、业务、脚本、爬虫,用 node 这么久没发现有是需要撇开 node 才能解决的问题。 但是历史包袱的原因,例如上面有人说到的精度问题,bigint 超限的要转 string 比较安全,这种确实很蛋疼。 还有就是 npm 里面包多质量不稳定,但是能想到的领域基本上都有可靠方案,精度计算,各种 driver,各种 sdk,这方面没有什么业务开发的问题。 我现在唯一想写、有写的,只有 js ts go,其他的都太罗里吧嗦。 |
87
durban126 2020-12-16 10:34:20 +08:00
最近在看 nestjs 感觉不错,可以试试
koajs express 都是比较轻量的 |
88
KouShuiYu 2020-12-16 10:39:16 +08:00
在小公司做广告管理系统,服务目前跑了几个月的一直 ok,感觉小公司涉及前端项目的用 node 做后端还是很适合的,js 一把嗦
|
89
scr 2020-12-16 10:44:43 +08:00
创业全干工程师, 后端用的 nestjs
业务基本是简单的 curd,跑测试单节点 qps 在 4 千左右; 但如果到 4 百 qps, 就能有足够的利润招专业的后端来重新写后端了; 选 nestjs 也有这部分考虑, 可以直接转 springboot |
90
hantsy 2020-12-16 10:46:01 +08:00
@leekafai 最大的问题就是 NPM 包的兼容性,G,F 家大公司还好。一些小的第三方,Broken 的事经常遇到,lock 文件锁定还是不错的。
|
91
AGEGG 2020-12-16 10:53:05 +08:00
用 node 时最烦的还是包管理,出现过依赖包的依赖包有问题结果安装不上的情况
|
92
catinsides 2020-12-16 10:58:52 +08:00
举手! MEAN stack 全干.
看上面的回复感觉不少人还是对 node 有偏见和误解,不要听风就是雨。 |
93
TJT 2020-12-16 11:08:56 +08:00
我司用 Node 支持了每日近亿 PV, 加上 TypeScript 说实话目前都还挺够用的.
|
94
lonelymarried 2020-12-16 11:09:40 +08:00
自己的项目我就用 node 写,主要是速度快。发现国外很多开源的很多用 node 写啊。反而 java 很少。
|
95
libotony 2020-12-16 11:18:51 +08:00
业余 node 开发者(三年前 node 用的比较多,后来转 go 了 ),前段时间做了个项目,用 typescript + typeorm + express 无脑数据库代理,这种相对不复杂的场景用 node 的话开发效率高,性能瓶颈肯定不在 node 。
优点: IO 密集型场景下,性能优秀 开发效率快 npm 包数量比较大 资源占用少(以我的认知) 缺点: 成也 JS 败也 JS 且与前端共用生态。在细化的后端领域,JS 好学不代表可以上来直接用 node 做后端更不代表前端可以革后端的命,狭隘的讲前后端的知识体系有差异的,合格的 node 程序员少找。前后端通吃一定是牛逼的,我更愿意偏向于前后端都能干好的为“全干“工程师 缺少”企业级开发框架“的领军者,或者说”企业级开发框架“暂未推广开来 用不用 node 还是看场景吧 |
96
xionger 2020-12-16 11:20:58 +08:00
我用 方便好用 性能也不错
|
97
mingsz 2020-12-16 11:22:01 +08:00
举个手,挺好用的,容易上手,灵活,开发快,轮子也多
|
99
SuperManNoPain 2020-12-16 11:41:37 +08:00
@dantegg 艹 , node_modules 优点+1
|
100
wanguorui123 2020-12-16 11:47:23 +08:00
NodeJS 写过大型后端系统
|