为什么要写这本书

在这一年里从无到有的开发了两个 webapp,重构了一个 webapp,还在维护其他的两个 webapp,因为全部使用的都是 React 技术栈的缘故,所以在这方面积累了不少的经验。写这本书的初衷其实是想整理出一个内部参考的 guidelines,大致叙述开发中的一些代码为什么这么写,为什么做这样的技术选型,踩过哪些坑等等。但是发现有些事情如果不详细叙述来龙去脉的话,很难解释清除,也很难让人信服,于是把一本小册子的篇幅拓展成为了一本书

如果你是作为一个初学者来看这本书,建议你在开始尝试写第一个应用,或者完成第一个应用之后再来阅读这本书,因为只有在实践之后你会冒出很多问题,带着问题来阅读会更有启发

其实当中很多的内容都已经发表在 个人的技术博客 和 知乎专栏 中,这次也都会收入作为完整性的保证,并且做了优化和修改

为什么你需要 Redux 最佳实践

虽然这篇前言是写给 React 与 Redux 的开发者看的,但是对于 Vue 以及 Angular 等框架同样成立

本来不是想写成本书,只是想整理出一套对内的 Redux 开发规范,但是发现要解释的事情太多了,最后还是决定集结成册了

程序员在开发的过程中会本能的追求问题的最佳解, 更有默契的是大家通过不同途径得到最佳解通常是相似的,这些就是我们熟知的设计模式和最佳实践,而框架和类库则是这些共识作为代码的化身。

所以在项目的开发中,引入框架和类库的同时它们已经为了你解决了一部分问题。例如你知道 MVC 架构非常适合当前的业务场景,你会选择直接引入 Angular 框架而不是重新用代码实现一遍 MVC

但使用框架也带来了限制:在项目中使用到的框架越多,个人技术自由发挥余地也就越小,因为你的种种代码行为都要在行走在框架之下。尤其是当多个类库需要共存时,类库之间的兼容性问题会凸显出来,解决之道可能会顾此失彼。

注意“限制”在其实是一个中性词,值得讨论的事情就在这里:框架带来的限制具有双面性

我们先说它积极的一面,这也是这本开源图书的意义

以 React 与 Redux 框架(以下简称为 RR )为例,这两项技术在短短几年的时间里毫无疑问成为了前端开发中的标配和明星,围绕它们衍生出的框架和类库也不甚枚举。这一种繁荣并不是假象与泡沫,而是真实的推崇。因为它们经历住了无数项目的考验与工程师的实践。我不敢说每一位工程师都认可它们的价值,或许你也听不到人们的口口相传,但身处行业里,你也看到越来越多的公司把这两项技术纳入它们的前端技术栈,并且基于它们开发新应用重构旧产品; 以及越来越多的人在谈论它们、学习它们,这些都预示着 RR 欣欣向荣的趋势。

webapp 需要处理的业务大部分都是相似的,例如与后端的数据互动,表单的填写和提交,数据的展示和交互等等。有了上述所说的广泛群众基础,你完全可以想象已经有足够多的开发人员基于 RR 实现了无数次相同的业务场景,进一步推论也就是说,关于如何使用 RR 实现常见的业务功能,早就有了最佳实践,有的还被整理成了类库,例如与表单相关的 rc-form, 与远程加载数据相关的 react-refetch , 甚至如果你要做的是一个并不特殊的 webapp,你还可以直接套用 antd-pro 。即使与业务无关,在工程方面例如关于如何设计组件,如何设计数据格式以及如何优化性能等等也有成熟的规范和技巧可言

绕了一大圈我其实想说的是,在现实工作中你遇到需要使用 RR 解决的业务问题,绝大部分压根就不需要思考,有许许多多这些开箱即用的解决方案等着你信手拈来。这无论是对于个人还是公司的发展都是有利的,因为成熟的方案有助于你减少犯错,并且加速项目开发;而基于你稳定的产出对于公司来说有利于产品推进以及业务发展。

更重要的是,同时有私心的说,成熟标准的解决方案能够让你从公司业务的重复劳动中解脱出来,在“快准狠”的完成工作内容之后,额外的时间你既可以选择重构你的代码,探索其他的实现方式,也可以选择学习新的技术。程序员是和自己赛跑的人,也是和时间赛跑的人

这本书的意义,就是把这些开箱即用的解决方案做了一个整理和集合,涉及到整个Redux 项目的方方面面。资料的来源非常多样,有的是来自官方文档的推荐,有的是社区公认最佳,有的则是我个人项目中的最佳实践。放心,即使是前两种来源,我也是在项目中反复实践多次确认无缺陷之后再推荐给的大家的,并且附上个人的心得见解

以上都是框架限制带来的积极一面,最后说一说框架带来的负面效应

假设你现在已经运用 Redux 框架到如火纯青的地步了,每一处 API 的用法都能倒背如流,每一个组件都了如指掌。但是你却可能忽略了一个终极问题:为什么我要使用 Redux?难道今后的每一个项目,项目里的每一个组件都要接入 Redux 框架吗?

在运用每一个工具的同时,你还需要了解这个工具解决的问题以及它的构造原理。这样在遇到新的问题的时候才有参考才有联想才能思考。过度的使用工具,容易使得自己也沦为工具。

我不鼓励造轮子,但是我鼓励向轮子学习

另一个个人最直观感受到的负面效应是,限制让技术变得不好玩了:(

如何阅读这本书

虽然这本书分为了不同的章节,但是有的章节里的内容其实放在另一个章节也同样适用。同时章节的前后还是有递进关系、有主次关系的。所以最好的阅读方式还是按照章节的先后顺序进行完整的阅读。

results matching ""

    No results matching ""