第1章 前端工程化
进化本身是生物体与环境之间持续不断的信息交换的具体表现。
——摘自《信息简史》
在桌面软件盛行的20世纪90年代中期,由Web技术开发的电子商务服务平台Viaweb在当时被认为是另类的、难以成功的。时间最终证明了Paul Graham和Robert Morris[1]眼光的前瞻性,1998年Viaweb被雅虎以近5000万美元的价格收购,成为当时全球最大的电商平台之一:Yahoo! Store。站在当前的时间节点,以现代人的眼光回顾旧时代,你可能会觉得当时的人目光短浅且顽固不化。但是如果剥去时代赋予的知识和眼界回到1995年,可能绝大多数人都会站在Viaweb两位创始人的对立面。
想象这样的场景:给你一台装有Windows 98操作系统的电脑,使用IE6浏览器打开任意10个网站,将能够顺利运行的网站个数写下来,然后看结果是否达到了及格线。虽然这个场景在目前没有任何现实意义,因为Web技术是随着历史的车轮不断进化的,用老旧的浏览器运行现代的网站是自讨苦吃。而之所以讨论这个场景是为了提醒大家:现代网站具有丰富的表现力、流畅的交互操作和便捷的功能的根本原因是,计算机技术和Web开发技术的不断进化以及相关生态的逐步完善。如果将这些技术和生态沿着历史的轨迹倒退到二十几年前,你是否会在一个没有AJAX、没有CSS3,甚至最高级的浏览器都不如IE6的年代,选择使用Web开发一个电商平台呢?是否会在一个对于Web网站的定位只是将报纸搬上电脑屏幕的时代去讨论Web网站的架构和工程化呢?
架构可以渗透到任何一个细微之处,即使再简单不过的一个静态网页也存在架构,只不过过于简单,没有讨论的价值。当业务的复杂度提升到必须由更复杂的技术架构承载时,对架构的研究才有了意义。工程化同样如此。换句话说,任何针对架构和工程的讨论和研究必须以业务为根本出发点。
Web技术支撑着网站丰富的业务,同时网站的业务类型也受限于Web技术的时代局限性。所以,本书讨论的所有关于前端业务、技术、架构和工程的内容,均基于当前时间节点所处时代赋予前端工程师的时代意义。