前 言
像架构师一样思考,突破技术瓶颈
透过工程基建,架构有迹可循。
前端开发是一个庞大的体系,纷繁复杂的知识点铸成了一张信息密度极高的图谱。在开发过程中,一行代码就可能使宿主引擎陷入性能瓶颈;团队中的代码量呈几何级数式增长,可能愈发尾大不掉,掣肘业务的发展。这些技术环节,或宏观或微观,都与工程化基建、架构设计息息相关。
如何打造一个顺滑的工程化流程,为研发效率不断助力?如何建设一个稳定可靠的基础设施,为业务产出保驾护航?对于这些问题,我在多年的工作中反复思考、不断实践,如今也有了一些经验和感悟。
但事实上,让我将这些积累幻化成文字是需要一个契机的,下面我先从写本书的初心及本书涉及的技术内容谈起。
我理解的“前端工程化基建和架构设计”
我们知道,前端目前处在前所未有的地位高度:前端职场既快速发展着,也迎接着优胜劣汰;前端技术有着与生俱来的混乱,也有着与这种混乱抗衡的规范。这些都给前端工程化基建带来了更大的挑战,对技术架构设计能力也提出了更高的要求。
对于实际业务来说,在前端工程化基建当中:
• 团队作战并非单打独斗,那么如何设计工作流程,打造一个众人皆赞的项目根基?
• 项目依赖纷繁复杂,如何做好依赖管理和公共库管理?
• 如何深入理解框架,真正做到精通框架和准确拿捏技术选型?
• 从最基本的网络请求库说起,如何设计一个稳定灵活的多端Fetch库?
• 如何借助Low Code或No Code技术,实现越来越智能的应用搭建方案?
• 如何统一中后台项目架构,提升跨业务线的产研效率?
• 如何开发设计一套适合业务的组件库,封装分层样式,最大限度做到复用,提升开发效率?
• 如何设计跨端方案,“Write Once,Run Everywhere”是否真的可行?
• 如何处理各种模块化规范,以及精确做到代码拆分?
• 如何区分开发边界,比如前端如何更好地利用Node.js方案开疆扩土?
以上这些都直接决定了前端的业务价值,体现了前端团队的技术能力。那到底什么才是我理解的“前端工程化基建和架构设计”呢?
我以身边常见的一些小事儿为例:不管是菜鸟还是经验丰富的开发者,都有过被配置文件搞到焦头烂额的时候,一不小心就引起命令行报错,编译不通过,终端上只显示了短短几行英文字母,却都是warning和error。
也许你可以通过搜索引擎找到临时解决方案,匆匆忙忙重新回到业务开发中追赶工期。但报错的本源到底是什么,究竟什么是真正高效的解决方案?如果不深入探究,你很快还会因为类似的问题浪费大把时间,同时技术能力毫无提升。
再试想,对于开发时遇见的一些诡异问题,你也许会删除一次node_moudles,并重新执行npm install命令,然后发现“重启大法”有时候真能奇迹般地解决问题。可是你对其中的原理却鲜有探究,也不清楚这是否是一种优雅的解决方案。
又或者,为了实现一个通用功能(也许就是为了找到一个函数参数的用法),你不得不翻看项目中的“屎山代码”,浪费大把时间。可是面对历史代码,你却完全不敢重构。经过日积月累,“历史”逐渐成为“天坑”,“屎山代码”成为业务桎梏。
基于多年对一线开发过程的观察,以及对人才成长的思考,我心中的“前端工程化基建和架构设计”已不是简单的思维模式输出,不是“阳春白雪”的理论,也不是社区搜索即得的Webpack配置罗列和原理复述,而是从项目中的痛点提取基础建设的意义,从个人发展瓶颈总结工程化架构和底层设计思想。基于此,这本书的内容呼之欲出。