阅读《node之道》
本文属于原创文章,转载请注明–来自桃源小盼的博客
介绍
原书名《tao of node》,一般翻译为《node之道》,不推荐node新手小白阅读,推荐有一定使用经验的开发者阅读。
作者AlexanderKondov,还写了《react之道》。他说自己白天是软件工程师,晚上是作家,中间是龙与地下城爱好者。
前言
作者说这本书的一切都是一种观点,并且讲述了理由。
既然是观点,我们就要选择性采纳,这要有自己的判断力。在我工作的这些年里,总会看到很多编程的观点,有的观点很受用,有的让我感觉违反自己的经验,此时就会种下疑问的种子,到底作者片面了还是我错了呢?而有些话题不同的作者有不同的看法,这是很正常的现象,并没有银弹。很多争论也会持续好多年。
构造和编码
在架构设计中保持一致,降低沟通成本,即使你的设计不是最优秀。我认为如果你有了更好的方法,为了保持一致,也要全部更改,而不是部分更改。
我们经常遇到一个问题,你写了个方法,感觉是通用,但好像目前只在一个地方使用。就开始纠结到底放在哪个目录下,作者建议放到最近的地方,直到被重用,再去提炼。
很多优秀的程序员说函数不能太长,限制到10-20才是优雅的,但是显然世界没那么简单,有的时候,我们把大函数拆开,也会觉得别扭。作者的观点是,不要纠结于长度,而是看它做了什么,是不是单一责任。原来我一直以来都把关注点搞错了,长度短是好,但却忽略了最重要的一面。
复制导致的重复代码,并不见得就是坏事。为了抽象而抽象,反而很难使用,很难理解。有些时候,复制导致的重复,是可以被接受的。
当你觉得代码不好时,立即重构它,因为拖得越久,越不容易改变它,并且早早改变它,也会让后面的工作,更顺利。
代码能表达的词汇是有限,注释表达能力更好,自然有它的用武之地。
在js中,最好用undefined代表空值,如果是对象,最好为属性提供默认值,能大量减少后续的检查性代码。
工具
作者推荐了nest.js,我也推荐大家在搭建bff时优先考虑nest.js。底层是express,借鉴了spring的设计理念,支持typescript。
利用语言的特点,建立可重用的函数库,不在建议使用lodash,确实越来越没必要使用了,很多方法,原生js也有,而那么多函数,常用的就几个。
npm包就算小版本更新也会时常发生破坏性更新,所以一定要谨慎对待,管理好版本号。
javascript让你在独自写代码的时候很快,但是typescript让你在团队工作中更快。
使用容器管理你的node服务,这会让你拥有与其他语言框架一样的功能:监控、自动重启、健康检查、日志管理。
创建自己的脚手架cli,每个团队都有所不同,把自己的架构也包装起来复用。
一定要记录好日志,node服务也是一种后端服务,前端一般没这方面的经验,在日志上花点时间是值得的,目前推荐pino。
测试
当你到达一个特定的阈值后,测试的回报就会越来越少,这个观点是对的。但是大多数团队在达到这个阈值前就放弃了编写测试。
可测试性是至关重要,但它不应该优先于模块化、可拓展性和简单性。
性能
不要阻塞事件循环,node不适合计算密集型应用。
不要使用node做静态资源服务。
性能问题的主要原因一直是数据库。
书籍
一起阅读,效果更佳。