新版犀牛书该不该入手?
三月初,各大前端公众号开始一波抽奖送书活动,原来是经典的“犀牛书”《JavaScript 权威指南》第七版的中文版面世了,等不到抽奖,迫不及待买了一本,这几天粗读了一遍,先给出结论:本书内容较新,涵盖了 ES2020 之前的全部内容,可以入手。
书变薄了
今天主要是想通过和第六版的对比的形式来看看第七版犀牛书有什么变化。首先最大的变化就是书变薄了!从原来的 1000 多页缩到了不到 600 页,篇幅变小的原因书中也交代了,如今互联网的普及,纸书已经没有必要将参考资料放入其中,直接看 MDN 网站 就可以了。
译者
第二个变化就是译者发生了变化,第七版的作者是拥有十五年技术翻译经验的李松峰,经典的“红宝书”《JavaScript高级程序设计》第 4 版也是出自其手。而第六版当年是淘宝前端团队做的翻译,当时正是 2011 年,十年之间发生了翻天覆地的变化,今天看了译者,无意中发现熟悉的云谦和玉伯二位大佬赫然在列,如今二人已从淘宝到了蚂蚁,大佬们十年前的个人介绍也如此青涩:
内容升级
第三个变化就是内容了。内容上有非常大的更新,新增了类、模块、迭代器、生成器、Promise、async/await 等内容,并对章节进行了大幅度的调整。这里需要注意的一点是,Promise 在本书中被译为“期约”,倒是比较形象的译法。
十年间,JavaScript 飞速发展,第六版还是基于 ES5 编写的。而从 2015 年起,ES6(2015)开启了 JavaScript 新的篇章,ECMAScript 的规范也改为了按年为单位发布,也就有了(ES2016、ES2017、ES2018、ES2019、ES2020),就在 3 月 9 日, ES2021 的最终功能集也尘埃落定,预计今年 6 月就会成为最新的 JavaScript 标准,详见我翻译的这篇文章。而且自从 TC39 进程 制定以来,ECMAScript 版本的重要性就降低了很多,而且随着版本的逐渐增加,对用户而言关注某个特性对应的 ES 版本也变得更加困难,所以我们也常以 ES6 代指 ES2015 之后的版本。
纸质书最大的缺点就是无法如网站一样能够及时更新,尤其如 JavaScript 这样每年都有新功能成为新标准的语言,但是我们可以从这两个版本将尽十年的跨度,窥见 JavaScript 的发展,看到哪些是不变的,哪些又被时代洪流滚滚冲刷殆尽。
下面是最新版的犀牛书目录脑图:
升级要点
对比第六版主要有如下要点:
不变的主要还是词法结构、类型、值和变量、表达式和操作符、语句、对象、数组、函数;这几个部分注意 ES6 新增的相关内容。
类和模块单独成为一章,十年间 JavaScript 模块化技术层出不穷,终于迎来了 ESM,原生的模块时代已然到来。
正则和子集与扩展被并入了 JavaScript 标准库一章,作者按照新的维度将新特性集合、映射 与 正则、日期、Error、JSON、国际化、console API、URL API、计时器等内容整合到了这里。
增加了迭代器、生成器、异步、元编程章节,可见其重要程度。
浏览器中的 JavaScript 章节被保留,将第六版单独成章的 Window 对象、脚本化文档、脚本化 CSS、事件处理、脚本化 HTTP、客户端存储、多媒体、图形编程、HTML 5 API 整合到了这章。并删除了 jQuery 类库一章,jQuery 时代一去不复返了。
第七版增加了 Node 服务端 JavaScript 一章,诞生在 2009 年的 Node 当时还不被作者重视,完全没体现在第六版中,而十年间 Node 的飞速发展给前端生态带来了翻天覆地的变化,借助 ES6 的定稿和 v8 引擎的加成,Node 也在 JavaScript 生态扮演了越来越重要的位置。
其实这两年随着前端框架的相对稳定,前端的生态已经进入了成熟期,面对纷繁复杂的新技术,构建知识地图对前端小伙伴尤其重要,从经典的教程可以看出作者的梳理 JavaScript 的知识脉络,给我们的知识地图的构建提供了很重要的参考。新版犀牛书,值得购买。
红宝书
2021-03-26 应评论区同学要求,入手了“红宝书”第四版,先睹为快:
书里贴心自带学习路径图: