我是一名有着20年经验的Web开发人员。在这20年中,我参与了各种规模的项目,其中包括独自一人开发的微型创业项目,与其他几位同伴一同完成的小型项目,也参与过多人合作的大型项目(人数肯定超过了我家餐桌旁摆放的椅子数量)。
2014年,我和neuland Büro für Informatik的同事们负责为一家连锁百货公司重建电子商务系统。其现有的电子商务系统不仅存在性能问题,而且结构非常混乱,在其基础上开发新的功能需要耗费很长时间,通常还会引发系统其他功能的故障。随着相关开发团队规模的逐渐扩大,系统愈发难以维护。客户要求新的系统除了具有更加合理的架构外,还希望在此架构上,不同的开发团队能够独立开展工作,互不影响。这种并行开发的能力,对于客户以信息化为基础快速扩张业务的计划,有着至关重要的意义。为此,我们选择了一种“垂直化”的系统架构:按照职能划分,设立多个独立的团队,每个团队专门负责一块特定业务的开发,包括从数据库到前端页面展示的所有工作。这样每个团队所负责开发的部分都是独立和自治的,最终会在前端页面层面整合在一起。从概念上来看,前端整合似乎没有什么难度,但事实上我们需要掌握大量的知识才能有效地实现前端整合。随着项目的深入,我们逐步完善了所采用的技术,并从实践中总结了大量经验。
与此同时,其他公司也在采用类似的技术方案。然而业界对这种方案没有一个统一的命名。每当我想通过搜索引擎了解多个独立且自治的团队在共同完成一个Web应用程序所面临的挑战时,总是无法找到合适的搜索词来恰当地描述我的意图。在2016年11月,ThoughtWorks Technology Radar将这种技术方案命名为“微前端”,这一术语的出现更加便于大家在开发社区中围绕一致的技术架构分享最佳实践、技术和工具。
在2017年的夏天,我抽空对实践中的一些经验进行了总结。将所使用的技术凝结为独立的示例项目,并发布到https://micro-frontends.org上。从那时起,情况发生了一些变化,我被邀请在各种会议上发言,也收到了许多杂志社的约稿。社区中的开发人员还将网站翻译成各种语言。
最重要的是,去年年初,Manning出版社的Nicole和Brian找到了我。他们邀请我写一本关于微前端的书。收到邀请时我首先想到的是:“这有点离谱,我可不是一名作家!我甚至不喜欢阅读文字,而更喜欢倾听、编写代码、搭建系统以及解决问题”。但这看起来又是一个千载难逢的机会,在给出答复之前我经过了慎重考虑,并与家人和朋友讨论了多次。最后我决定抓住机会,接受这个邀请。毕竟,我非常喜欢表达和阐述。将思考总结成书,以图(我非常喜欢图)和代码示例的方式呈现,对我来说也是一种挑战,在整个过程中我也能学到很多东西。回顾编写本书的历程,我很满意当初的决定,以及这个决定的最终产物,也就是各位现在看到的这本书。