V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cl903254852
V2EX  ›  程序员

有没有 Node 的好书推荐?

  •  
  •   cl903254852 · 2019-12-03 11:06:09 +08:00 · 2979 次点击
    这是一个创建于 1596 天前的主题,其中的信息可能已经有所发展或是发生改变。

    node 相关的书也太匮乏了,目前看过最好的就是朴灵的<深入浅出 node.js>还是 4 年前的作品,node 原理相关。 其它 node 相关的书不是讲的太浅就是平庸之作,大量的教你弄个聊天室教你弄个博客。 反观人家 java <java 并发编程>、<深入 java 虚拟机>、<java 编程思想>,你看看人家的书讲的都是啥?

    18 条回复    2019-12-04 01:05:05 +08:00
    carrywu
        1
    carrywu  
       2019-12-03 11:46:14 +08:00
    🈚️
    nianyu
        2
    nianyu  
       2019-12-03 11:48:10 +08:00
    node 没有好书, 只有讲 几个 api 和 express koa 等玩具框架的
    onfuns
        3
    onfuns  
       2019-12-03 13:18:06 +08:00
    写来写去都是写 api 的,没有系统实战的书籍
    jon
        4
    jon  
       2019-12-03 13:59:54 +08:00
    都去学 go 了把
    salamanderMH
        5
    salamanderMH  
       2019-12-03 14:03:40 +08:00
    这个人: https://xcoder.in/
    写了本《 Node.js:来一打 C++ 扩展》,你有兴趣不?
    szdubinbin
        6
    szdubinbin  
       2019-12-03 14:14:32 +08:00
    也说明市场决定一切吧,像 python 和 node 在纯后端市场一直不是主流,像很火的中间件,微服务之类都很难找到最佳实践那些东西的。
    wangyzj
        7
    wangyzj  
       2019-12-03 14:26:47 +08:00
    我用 node 替换了 php 因为效率和先进
    可能单线程单例的东西写书的都觉得简单把
    或者前端工程师都忙着造轮子没时间写书
    libook
        8
    libook  
       2019-12-03 14:27:30 +08:00
    官方 guide 看一遍,然后 API 文档看一遍,Web 框架看一看用一用,就行了,没必要看书,我自己带的实习生对 JS 栈 0 基础,看官方文档一个月上手。
    cl903254852
        9
    cl903254852  
    OP
       2019-12-03 15:06:15 +08:00
    @libook 这只是停留在会使用层面
    learnshare
        10
    learnshare  
       2019-12-03 15:08:43 +08:00
    只能去看流行库的源码了
    cl903254852
        11
    cl903254852  
    OP
       2019-12-03 15:13:26 +08:00
    @wangyzj 我觉得 node 真是好东西啊,擅长 I/O 密集型,对于单线程来说,node 也有 cluster worker_threads child_process。就算后端分层来说,java 或 go 做数据层,node 做中间层来招客都是非常好的架构,这也在很多厂里已经实践了。
    但现在很多 node 使用者,大部分也只是使用而已,对于内存、多线程多进程、并发等摸都摸不到。node 都出来 10 年了,居然没有几本像样的书,真的很可惜
    cl903254852
        12
    cl903254852  
    OP
       2019-12-03 15:15:46 +08:00
    @salamanderMH 哈哈,这本书立场会不会很尴尬,为啥不直接学 C++(仅从书名发表感想),轻喷😹
    wangyzj
        13
    wangyzj  
       2019-12-03 15:45:41 +08:00
    @cl903254852 其实我也只是使用,没深究过,很多多进程啥的都用其他体系结构去解决,就像我说的替换 php,只是写 web 的小东西,其他的功能有更好的选择,体系结构上他比 php 更好更先进
    想深究看 v8 吧
    libook
        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 本身的东西真的没多少,后端相关的知识里绝大部分是设计模式、系统架构、数据库、中间件,但这些都是与语言、引擎无关的。
    jerrry
        15
    jerrry  
       2019-12-03 17:54:23 +08:00 via Android
    @libook 一直好奇,部署 node 项目的正常流程,是带一大堆 node_modules 吗?还是说打包成单文件再部署上去。
    libook
        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 主节点的文件就行了。
    cl903254852
        17
    cl903254852  
    OP
       2019-12-03 19:23:27 +08:00
    @libook 码字辛苦了。你说的这些确实是我想知道的,其实说白了就是想有那么几本书能包含这些东西,并伴有 node demo (也可以说我懒)。

    你们的 node 是用容器部署的吗?还是其他方式?
    libook
        18
    libook  
       2019-12-04 01:05:05 +08:00
    @cl903254852 我们有些服务在 K8s 里,有些是在云主机上直接部署,用容器主要是想尝试用 K8s 的 DevOps 和 SRE 相关的功能,对于 Node 本身来说,容器能发挥的价值极其有限,不像 Java 那样能用容器来解决大量头痛的环境和配置的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3220 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:26 · PVG 22:26 · LAX 07:26 · JFK 10:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.