
本书能给你带来什么
通常,在选定一个前端框架并开启项目之旅后,我们会遇到各种问题。比较高效的解决方式是实时查阅API文档,并且在必要的时候查看源码来深挖其背后的实现原理。我们选择阅读相关图书则是因为希望系统、深入地了解该框架,而大多数此类图书的内容是基于源码和API分析或基于项目实践的。
本书的重点不在于介绍热门的前端框架,而是关注一些本质性的问题:我们为什么需要框架?如何设计框架?如何建设框架的生态?
如果读完本书并且能回答上述问题,那么我相信你对框架的理解将会超出一般使用的范畴。如果这时候再尝试问一句“为什么要选择这种技术”,我想你给出的理由将不再只是“维持团队的技术栈统一”或“开发者社区生态良好”这些常见的答案了。
具体而言,本书将讨论以下几点。
设计一款匹配需求的框架
提到框架设计,这似乎并不是绝大多数前端开发者需要关注的事情。虽然必须承认这一点,但是请不要忽视本节标题里的“匹配需求”4个字。
San出自百度移动研发部门,该部门开发的业务覆盖了你能感知到的几乎所有的百度产品。因为这些产品有用户量大、功能简明、响应速度要求高的特性,所以我们在设计框架的时候不得不把一件事情放在考量的首位,那就是高性能。
因此,在本书的各个章节中,你会看到San是如何把高性能这一设计理念贯彻始终的,以及如何在框架本身与周边设施的打造上让其落地。
打造一个技术矩阵
“全栈开发”的概念流行已久,无论对于以横向划分(客户端、手机浏览器、PC浏览器和PC客户端)还是以纵向划分(客户端和服务端)的维度,前端开发都已经由技术型覆盖演化为框架型覆盖。换言之,框架本身的运行时场景已经跨越了终端,从跨端融合到服务端渲染都能胜任。围绕开发本身的其他相关支持技术也在蓬勃发展:编码辅助工具、编译部署工具、调试工具、文档生成工具……它们都能让你事半功倍。
本书以San框架为基础,循序渐进地从不同的角度来讲解如何打造技术矩阵。
- 组件化与数据:第2章~第4章,主要讲解San的组件化设计、响应式的数据设计及数据流管理等知识,并说明为什么San是一款高性能的MVVM(Model-View-ViewModel,模型–视图–视图模型)框架。
- 服务端渲染:第5章,主要讲解San SSR的设计及其在业务中的具体运用。我们会对比不同框架的服务端渲染方案,并且会介绍为了提高性能,San SSR在数据传输和资源组织上的一些优化方案。
- San工具链:第6章~第8章,主要讲解我们在“开发–调试–编译–部署”工作流中开发了哪些工具来提升研发效率,还会介绍专门为San开发的命令行工具San CLI,以及对应的可视化界面实现。使用San CLI,可以对San工程进行编译依赖管理和性能优化,还能让用户扩展满足特殊需求的自定义插件。
- 跨端融合:第9章,主要讲解San的跨端融合支持,介绍如何深入结合前端框架与客户端技术栈,通过Native侧赋予的端能力来为前端开发插上翅膀,打造极致的用户体验。
- San的未来:第10章。我们会在这一章介绍San的发展规划,并且会和你一起探讨前端框架的未来。
如何设计
设计两个字后面可以跟的东西有很多,不限于San框架本身。在本书中,你会看到我们为了优化San工作流程,如何设计San CLI的各个模块,以及它们之间是如何配合的;你会看到我们如何设计协议、封装端能力,使得跨端融合框架San Native达到媲美客户端的运行效果和效率;你还会看到我们如何设计抽象开发者工具库,使得辅助开发工具能够满足各个端的研发需求。
我们会在介绍具体技术前,尝试把自己的思考一并展示给你,甚至包括我们在实践过程中辗转碰壁的过程。事实上,在把一门新的技术推广到公司级别的过程中,必须权衡很多不那么“纯粹”的技术问题。我们既不会游走在业务之外闭门造车,也不会一味盲从、接纳其他技术框架社区抛出的标准。这里面蕴含的“技术哲学”是在核心开发者不断打磨以及与一线开发人员不停沟通的基础上积累而来的,我们希望通过本书把它分享给你。