node 相关的书也太匮乏了,目前看过最好的就是朴灵的<深入浅出 node.js>还是 4 年前的作品,node 原理相关。 其它 node 相关的书不是讲的太浅就是平庸之作,大量的教你弄个聊天室教你弄个博客。 反观人家 java <java 并发编程>、<深入 java 虚拟机>、<java 编程思想>,你看看人家的书讲的都是啥?
1
carrywu 2019-12-03 11:46:14 +08:00
🈚️
|
2
nianyu 2019-12-03 11:48:10 +08:00
node 没有好书, 只有讲 几个 api 和 express koa 等玩具框架的
|
3
onfuns 2019-12-03 13:18:06 +08:00
写来写去都是写 api 的,没有系统实战的书籍
|
4
jon 2019-12-03 13:59:54 +08:00
都去学 go 了把
|
5
salamanderMH 2019-12-03 14:03:40 +08:00
这个人: https://xcoder.in/
写了本《 Node.js:来一打 C++ 扩展》,你有兴趣不? |
6
szdubinbin 2019-12-03 14:14:32 +08:00
也说明市场决定一切吧,像 python 和 node 在纯后端市场一直不是主流,像很火的中间件,微服务之类都很难找到最佳实践那些东西的。
|
7
wangyzj 2019-12-03 14:26:47 +08:00
我用 node 替换了 php 因为效率和先进
可能单线程单例的东西写书的都觉得简单把 或者前端工程师都忙着造轮子没时间写书 |
8
libook 2019-12-03 14:27:30 +08:00
官方 guide 看一遍,然后 API 文档看一遍,Web 框架看一看用一用,就行了,没必要看书,我自己带的实习生对 JS 栈 0 基础,看官方文档一个月上手。
|
9
cl903254852 OP @libook 这只是停留在会使用层面
|
10
learnshare 2019-12-03 15:08:43 +08:00
只能去看流行库的源码了
|
11
cl903254852 OP @wangyzj 我觉得 node 真是好东西啊,擅长 I/O 密集型,对于单线程来说,node 也有 cluster worker_threads child_process。就算后端分层来说,java 或 go 做数据层,node 做中间层来招客都是非常好的架构,这也在很多厂里已经实践了。
但现在很多 node 使用者,大部分也只是使用而已,对于内存、多线程多进程、并发等摸都摸不到。node 都出来 10 年了,居然没有几本像样的书,真的很可惜 |
12
cl903254852 OP @salamanderMH 哈哈,这本书立场会不会很尴尬,为啥不直接学 C++(仅从书名发表感想),轻喷😹
|
13
wangyzj 2019-12-03 15:45:41 +08:00
@cl903254852 其实我也只是使用,没深究过,很多多进程啥的都用其他体系结构去解决,就像我说的替换 php,只是写 web 的小东西,其他的功能有更好的选择,体系结构上他比 php 更好更先进
想深究看 v8 吧 |
14
libook 2019-12-03 17:13:52 +08:00
@cl903254852
可以说一下具体希望了解哪些层面。 如果希望了解语言层面的特性和原理,可以研究 ECMAScript 的规范,TC39 在 Github 上有 Organization,除了看已有特性的规范,还可以看 Proposal。另外看看 WTFJS 项目也可以加深理解语言方面的特性和引擎原理。 如果希望了解 V8 的原理可以去看 V8 的开发文档,甚至是源代码;另外 https://v8.dev/blog 上面也经常会有 V8 的一些特性原理介绍,比如 V8 是如何优化内存的消耗的。不过说实话,V8 的主张是不要去关心底层问题(印象很深地在 cache 管理介绍的文章里三令五申不要根据当前的缓存管理机制优化),因为 V8 在每个版本中会力求对已知的使用场景进行性能调优,所以版本更新的时候也经常会调整一些性能策略,你会发现你对旧版本做的性能优化在新版本不起作用了,而且真正遇到性能问题了应该考虑其他技术选型,比如 Webassembly(或 Node 的 N-API)。 操作系统、网络知识、数据结构与算法、设计模式、架构思想,这些应该都是语言无关的吧,Java 的相关书籍也只是讲解如何用 Java 实现这些,实际上只要了解了关键原理,就可以在任何语言上应用。 高并发是 Node 骨子里的东西,只要搞懂 Node 的异步机制和事件循环就可以了,其余的 Node 都帮你设计好了,不像 Java 那样还需要费很大劲去实现。 DevOps 方面,Node 的部署是超级简洁,拉代码、npm install、pm2 start 就搞定了,0 配置,配置在容器里也只是相当于套个壳子让 K8s 自动化管理。 Node 本身的东西真的没多少,后端相关的知识里绝大部分是设计模式、系统架构、数据库、中间件,但这些都是与语言、引擎无关的。 |
15
jerrry 2019-12-03 17:54:23 +08:00 via Android
@libook 一直好奇,部署 node 项目的正常流程,是带一大堆 node_modules 吗?还是说打包成单文件再部署上去。
|
16
libook 2019-12-03 17:59:46 +08:00
@jerrry 如果是容器的话,就是在线下或者 CI 里安装好 node_modules 再打包成镜像推倒线上 registry ;如果不用容器的话就是在服务器上下载代码然后用 npm ci(这个指令可以参照 package-lock.json 来安装,确保和开发、测试环境安装的依赖版本一致),安装完再启动,一般 npm 本地都有 cache,所以速度也都还能接受,而且如果是分布式部署的话,只需要在主节点上 npm ci,安装完后从节点直接 scp/rsync 主节点的文件就行了。
|
17
cl903254852 OP |
18
libook 2019-12-04 01:05:05 +08:00
@cl903254852 我们有些服务在 K8s 里,有些是在云主机上直接部署,用容器主要是想尝试用 K8s 的 DevOps 和 SRE 相关的功能,对于 Node 本身来说,容器能发挥的价值极其有限,不像 Java 那样能用容器来解决大量头痛的环境和配置的问题。
|