{T}

Web开发-浏览器、小程序与PWA

章节导言

前面几讲我们从 Native 应用角度讨论了桌面软件开发,范围局限于单机软件。今天开始,我们进入浏览器时代——这不仅仅是增加了一个运行平台,而是对桌面程序架构范式的根本性重构

许式伟指出,浏览器带来的变革可以从两个维度理解:商业维度上,它催生了软件服务化、随时发布和跨平台三大进步;架构维度上,它颠覆了操作系统的窗口系统、重定义了界面绘制机制、引入了语言限制、并带来了 B/S 架构的新挑战。理解这些变革的本质,是把握 Web 开发、小程序和 PWA 技术演进的关键。


核心概念与原理

浏览器:商业价值的三重跃迁

图表渲染中…

浏览器对界面开发框架的四大颠覆

从界面开发框架的视角,浏览器带来了四项根本性变化:

颠覆一:窗口系统被废除

图表渲染中…

在浏览器中,一个网页只是一个窗口,不再有父子窗口。所有界面元素(通用控件如 input/div,自绘窗口如 canvas)都是虚拟视图(Virtual View)。控件与图形的边界被淡化,事件分派通过统一机制完成。

颠覆二:绘制机制从"命令式"变为"声明式"

这是最本质的变化:

维度Native GDIHTML+CSS
本质绘制界面声明界面
方式命令式:调用 DrawLine/DrawText声明式:描述结构+样式
局部更新开发者自行实现(难点所在)浏览器自动处理
架构层级相当于 View 层实际是 ViewModel 层

关键洞察:HTML+CSS 不是 View 层,而是 ViewModel 层。View 层被浏览器自己实现了——修改 HTML DOM 时,浏览器自动更新 View,局部更新优化也由浏览器完成。

这正是第22讲中讨论的 View 层局部更新难题的终极解决方案:浏览器把 ViewModel 层标准化了,开发者不再需要自己处理局部更新

颠覆三:语言限制

浏览器长期只支持 JavaScript 一门语言,这对开发者的技术选型形成了强约束。突破这一限制的尝试包括:

图表渲染中…

颠覆四:B/S 架构

B/S 架构对应用架构的影响是双重的:

  • Server 端:从单用户变为多用户,数据可靠性的责任从用户转移到厂商
  • Browser 端:仍然是单用户,但失去了数据的本地存储(数据全在 Server 端)

Mermaid 图表:浏览器/PWA/小程序对比与 Web 架构演进

浏览器、小程序、PWA 全方位对比

图表渲染中…

小程序 vs PWA:关键差异对比

维度小程序PWA
演进思路独立发展,与Web有较大差异兼容并渐进改造Web标准
关注焦点商业生态:撬动用户市场技术标准:离线体验优化
分发方式中心化AppStore,平台审核去中心化,URL即入口
平台控制力极强:可下线全量用户极弱:开发者自主
商业闭环账号-支付-AppStore 三位一体无账号、无支付、无AppStore
离线能力包体限制下的有限能力Service Worker 强离线
操作系统代差下一代OS(有商业闭环)传统OS(缺乏商业闭环)
标准化各厂商各自迭代,标准不统一W3C 标准化推进

Web 架构的演进路径

图表渲染中…

设计原则与权衡

原则一:HTML+CSS 本质是 ViewModel,不是 View

这一认知是理解 Web 开发架构的关键。在第22讲中,我们讨论了 View 层局部更新的难题——在 Native 开发中,这是开发者必须自行解决的复杂问题。浏览器通过将 ViewModel 标准化(HTML+CSS),自动完成了 View 层的局部更新。

这意味着浏览器下的 MVC 实际上是 MVMP(Model-ViewModel-Presenter)模式——详见第24讲的深入分析。

原则二:小程序是 Native 应用在线化,不是 PC Web 移动化

小程序和传统 Web 开发的本质差异:

图表渲染中…

小程序更像 Native App 的在线版本:需要提交审核、受平台管控、有完整的应用生命周期。这是操作系统级别的商业范式,而非简单的技术方案。

原则三:平台控制力是双刃剑

小程序平台的强控制力意味着:

  • 正面:质量把控、安全审核、用户体验统一
  • 负面:开发者命运被平台掌握,平台可下线拥有亿级用户的应用
  • 矛盾:所有厂商在拥抱微信的同时,必然时刻想着逃离微信

刀刃,永远是两面的。 这也是 Facebook 推出 Libra 时选择放弃 Control 的智慧所在——让一步,进一百步。

原则四:PWA 的技术优势与商业短板

PWA 在技术层面优于小程序(标准化、去中心化、强离线),但在商业层面存在根本性短板——缺乏账号-支付-AppStore 的商业闭环。从操作系统的角度看,PWA 相比小程序差了一个代际。


实践案例与反模式

案例:微信小程序的必然成功

许式伟在 2016 年微信小程序内测时,就判断其必然成功,核心逻辑是:7 亿人同时使用的操作系统,在世界上极为罕见。如果把不同 Android 厂商归为不同主体,微信小程序是当时世界上最大的单一来源的操作系统。

这一判断基于一个架构原则:操作系统的核心价值是用户规模,而非技术先进性。DOS 不如 Unix 精巧,但凭借 PC 用户规模成为主流;微信小程序不如 PWA 标准,但凭借用户规模成为事实上的操作系统。

反模式:忽视小程序标准分裂的风险

国内小程序厂商(微信、支付宝、快应用、头条)各自迭代,标准不统一。开发者"一次开发,到处可用"的愿望至今无法实现。与 Android 不同——Android 厂商虽多,但开发接口和工具链一致。

教训:在选择小程序平台时,必须考虑标准分裂带来的维护成本。优先选择用户规模最大的平台,避免在非主流平台上过度投入。

案例:七牛的快速投资决策

在判断微信小程序必然成功后,许式伟一个月内做出了七牛的第一笔对外投资——"即速应用",帮助企业快速构建小程序。这个案例展示了技术判断力驱动商业决策的模式:先看懂技术趋势,再快速行动。

反模式:在 PWA 上构建封闭生态

PWA 的本质是开放标准,试图在 PWA 上构建类似小程序的封闭生态(如强制审核、集中分发)是方向性错误。PWA 的价值恰恰在于去中心化——开发者应利用 PWA 的开放性来规避平台锁定风险。


小结与关键要点

  1. 浏览器从商业和架构两个维度颠覆了桌面开发:商业维度催生软件服务化、随时发布、跨平台;架构维度废除窗口系统、引入声明式界面、限制语言选择、带来 B/S 架构。
  2. HTML+CSS 本质是 ViewModel 层:浏览器自动完成 View 层的局部更新,开发者只需操作 ViewModel(DOM),这是 Web 开发效率远超 Native 的根本原因。
  3. 小程序是 Native 应用在线化:它不是一个 Web 页面集合,而是一个受平台管控的完整应用,具备账号-支付-AppStore 的商业闭环,是下一代操作系统的形态。
  4. PWA 是技术更先进但商业更薄弱的方案:标准化、去中心化、强离线是优势,但缺乏商业闭环是致命短板。
  5. 平台控制力是双刃剑:小程序的强控制力既保证了生态质量,也让开发者面临被平台"掐脖子"的风险。
  6. 操作系统的核心价值是用户规模:技术先进性不如用户规模重要,这是微信小程序必然成功的底层逻辑。

交叉引用:本章讨论的浏览器架构颠覆,是第24讲中 MVMP 模式和 Web 开发架构的基础。HTML+CSS 作为 ViewModel 的认知,直接继承了第22讲中 MVC/MVP/MVVM 的架构分析。