node 在前端当中的重要性,是否每个前端都应该学习

2022-01-12 13:56:43 +08:00
 zzwyh

如题,请教各位大佬,是否前端都应该熟练使用 node 呢,这样是不是应该就包括后端一系列的基础知识

4190 次点击
所在节点    前端开发
61 条回复
shanyuhai123
2022-01-12 14:02:54 +08:00
不要说应不应该学,当你持续深入的时候这些你自然就遇到了。

1. 为了解放复制粘贴,自然就用到 node 读取写入文件
2. 为了写个简单接口,自然就了解到 koa 、nestjs 等
3. 为了部署服务,你自然就了解到服务器知识
4. 服务器被人挂马了,你自然就知道网络安全的重要性
murmur
2022-01-12 14:18:03 +08:00
除非你们用 node 跑后端,需要学调优这些,否则就复制粘贴 google ,用啥学啥

google 需求+npm ,库都封装好了
66beta
2022-01-12 14:33:33 +08:00
当然是选择 PHP 啦
3dwelcome
2022-01-12 14:39:42 +08:00
我也不知道为什么那么多人喜欢用 JS 。

同样学 wasm ,也可以做到前后端逻辑通吃,使用语言又完全随心所欲。

JS 开发调试工具没那么完善,写起来就好比把双手双脚束缚起来,完全没办法发挥全部潜力,跳不到最高点的。
murmur
2022-01-12 14:44:36 +08:00
@3dwelcome js 调试工具可太完善了,不就是 chrome dev tools 么,wasm 为啥要学,不都是其他语言编译过来的么

现在也就是吃 wasm 没调试工具,好混淆,红利一过大家又会想起 js 的好
mxT52CRuqR6o5
2022-01-12 14:56:19 +08:00
不说要有多熟练,node 一窍不通总是说不过去吧,毕竟大部分都是 js 本身的东西
3dwelcome
2022-01-12 15:07:17 +08:00
"js 调试工具可太完善了,不就是 chrome dev tools 么"

JS 调试和早年比是体验好不少,但和别的语言比,还是有不少差距的。

去年 google 给 chrome 特别支持了 wasm 调试,就是源语言变量也能完美显示的那种。

而且 wasm 是偏二进制内存处理,这点恰恰是 js 的弱项。js 的强项是处理文本逻辑。
mxT52CRuqR6o5
2022-01-12 15:10:05 +08:00
@3dwelcome 要求兼容 IE🐶
mxT52CRuqR6o5
2022-01-12 15:12:54 +08:00
@3dwelcome 正经的讨论一下,wasm 现在生态肯定比不过 js 啊,js 有那么多现在的样式库,wasm 的有多少
3dwelcome
2022-01-12 15:13:52 +08:00
@mxT52CRuqR6o5

wasm 支持高版本 IE ,他只是一个堆栈虚拟机,运行时可以编译成 JS 的。
3dwelcome
2022-01-12 15:16:10 +08:00
@mxT52CRuqR6o5

"wasm 现在生态肯定比不过 js 啊,js 有那么多现在的样式库,wasm 的有多少"

正常来说,用 WASM 和用 JS 的,是两种项目两类人,相互之间没太多交集的。

只有极少数我这种用 WASM 写前端逻辑的,习惯后,我个人觉得比写 JS 舒服。
shyling
2022-01-12 15:24:34 +08:00
还有裸写 wasm 的?
rsyjjsn
2022-01-12 16:09:55 +08:00
一个稍微技术好点的部门,都有基建的需求,搞基建难道你就用浏览器就能解决?脚手架,打包工具,规范组件库那个不需要 node?
murmur
2022-01-12 16:11:57 +08:00
@3dwelcome 能贴点代码出来看看么,不要翻译过的代码,贴点裸写的出来
devwolf
2022-01-12 16:36:51 +08:00
是哪个定义下的“学习 node”?

我个人的理解是,
搭项目、研究 webpack 这块也视作学习 node ,而不是仅限于 express 这样的
3dwelcome
2022-01-12 17:15:46 +08:00
@murmur

https://www.bilibili.com/video/BV1244y1e7W2

我写的代码,基本上和这个视频介绍的非常接近,八九不离十。
3dwelcome
2022-01-12 17:35:44 +08:00
我说一下自己 wasm 模式下的前端吧,还是和上面视频有点区别,没用到 websocket 。

简单来说,就是把 UI 状态和 DOM 节点还有点击之类的事件,打包后发送给 wasm 内部处理。

wasm 内部用其他语言接管逻辑,对 UI 状态解压,对事件响应。同时用模板生成的页面 DOM ,再发送给浏览器生成动态 UI 。

由于 wasm 是浏览器端的,完全不需要服务器辅助,帮我替换了几乎 90%以上的前端逻辑 JS 代码。
shyling
2022-01-12 17:38:11 +08:00
@3dwelcome 重新实现 blazor ?
3dwelcome
2022-01-12 17:40:33 +08:00
@shyling

不啊,blazor 是基于 C#的,我不太喜欢 C#。

wasm 又不限制特定语言,随心所欲都可以。

以前用 php 写后端模板,后来用 js 写前端模板。写多了,真的是烦透了用 js 拼接字符串,不想再玩了。
shyling
2022-01-12 17:42:11 +08:00
@3dwelcome 我还以为这么写代码的。。。
block $label0
local.get $var0
i32.const 12
i32.add
local.get $var0
i32.const 8
i32.add
call $wasi_snapshot_preview1.environ_sizes_get
br_if $label0
i32.const 628036
local.get $var0
i32.load offset=12
i32.const 2
i32.shl
i32.const 4
i32.add
call $malloc
local.tee $var1
i32.store
local.get $var1
i32.eqz
br_if $label0
local.get $var0
i32.load offset=8
call $malloc
local.tee $var1
if
i32.const 628036
i32.load
local.get $var0
i32.load offset=12
i32.const 2
i32.shl
i32.add
i32.const 0
i32.store
i32.const 628036
i32.load
local.get $var1
call $wasi_snapshot_preview1.environ_get
i32.eqz
br_if $label0
end
i32.const 628036
i32.const 0
i32.store
end $label0

搞了半天还不是写别的语言。。

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

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

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

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

© 2021 V2EX