本篇要回答的问题:作为界面开发框架,浏览器到底带来了哪些本质变化?由它衍生出的两支力量——中国特色的小程序与海外版的 PWA,差别和未来又在哪?
上一讲我们站在应用架构角度讲了桌面原生程序(Native App)的 MVC 设计,讨论范围还只是单机软件。本讲开始跨入网络,从浏览器讲起,看 B/S 架构如何改写界面开发的玩法。
浏览器
从商业价值看,浏览器带来的三点重大进步:
| 进步 | 含义 |
|---|---|
| 软件服务化 | 交付从单机软件转向云服务,社会分工巨变,任一环节都可能成长为吞噬上下游的超级节点 |
| 随时发布 | 极大改进迭代效率,可快速试验想法,不必因质量召回而束手束脚 |
| 跨平台 | 消除操作系统差异,一份代码到处运行 |
把重心放到界面开发框架这个视角,浏览器带来的本质变化有四点:
| # | 本质变化 | 说明 |
|---|---|---|
| 1 | 窗口系统被颠覆 | 一个网页只是一个窗口,无父子窗口;所有元素(input/image/div/canvas)都是虚拟视图,通过统一机制做事件分派 |
| 2 | 绘制机制变了 | 从调 GDI 绘制界面,变成 HTML+CSS 声明界面——这是本质差别 |
| 3 | 语言限制 | 长期只支持 JavaScript;突破方案有代码转换器(如 Go→JS)、WebAssembly;Dart 想取代 JS 但失败 |
| 4 | B/S 架构 | Server 端从单用户变多用户,Browser 端仍单用户但没有了数据(数据都在 Server 端) |
关键洞见:HTML+CSS 不该理解为 View 层,而是 ViewModel 层——真正的 View 层被浏览器干掉了。改 HTML DOM 时浏览器自动更新 View,局部更新优化你不必关心,浏览器已经做完。这事的价值超乎想象,大幅提升了桌面应用开发效率。
| 对比维度 | GDI | HTML+CSS |
|---|---|---|
| 本质动作 | 绘制界面 | 声明界面 |
| 局部更新优化 | 开发者自己做(难点) | 浏览器自动完成 |
| 对应 MVC 角色 | View 层 | ViewModel 层 |
小程序
2016 年 9 月微信小程序(最初叫"应用号")开始内测。作者当天与七牛团队的内部对话点出了几个关键判断:
关键判断:微信实际上升级了浏览器内核的标准,符合"新一代浏览器"的定义;移动时代最佳的浏览器是 IM,不再是传统浏览器——因为 IM 封闭性更强、用户不易跳出,这样的土壤才能构建 App 生态。
为什么微信小程序必然成功?因为有 7 亿人同时使用的操作系统极少,它是当时世界上最大的单一来源操作系统。随后支付宝、快应用、今日头条小程序跟进,小程序成为真正意义上的"国产操作系统",对抗 Android/iOS。
小程序与传统 Web 开发的根本不同:
| 维度 | 传统 Web | 小程序 |
|---|---|---|
| 形态 | 一个个 Web 页面构成 | 一个应用(Native 程序在线化,而非 PC Web 移动化) |
| 上架 | 自由发布 | 需提交审核,厂商掌生杀大权 |
| 下线风险 | 无 | 厂商可下线已有上亿用户的 App,让其一无所有 |
关键判断:厂商可掐掉一个 App 的全部(苹果只能掐新增)——这带来"操作系统厂商权限边界在哪"的伦理与法律问题。风险如此之高,所以所有厂商在拥抱微信的同时,必然时刻想着如何逃离微信。刀刃永远是两面的。
小程序当前最大问题是标准不统一:各家接口快速迭代,难建统一标准,更谈不上"一次开发到处可用"——这与 Android(厂商多但接口/工具链一致)不同。
PWA
Google 在推自己的移动浏览器方案 PWA(Progressive Web App),可理解为"海外版的小程序"。它始于 2015 年,早于微信小程序,并得到苹果、微软支持。
| 对比维度 | 小程序 | PWA |
|---|---|---|
| 演进思路 | 与 Web 差异较大 | 兼容 Web、逐步改造升级 |
| 关注焦点 | 撬动庞大用户市场(甚至出小游戏) | 更技术化,重在断网下与本地应用一致的体验 |
| 中心化 AppStore | 有,封闭操作系统 | 无,更像技术标准,不怕被掐脖子 |
| 商业闭环 | 符合"账号-支付-应用市场" | 没有账号、没有支付,作为 OS 太传统 |
关键判断:技术上相似,但以操作系统视角看两者有代差——小程序符合现代操作系统"账号-支付-AppStore"的商业闭环,PWA 没有账号也没有支付。作者推测最终把 PWA 发扬光大的很可能是 Facebook(大概率也会放弃包袱重新出发)。
总结
浏览器作为界面框架,最深刻的一击是用 HTML+CSS 这层 ViewModel 接管了 View 层与局部更新;由它衍生的小程序与 PWA,本质都是"软件服务化 + 跨平台"的移动浏览器之争,区别在于是否构成"账号-支付-应用市场"的操作系统闭环。
先把"是什么"回答清楚
| 概念 | 一句话说明 |
|---|---|
| 浏览器界面框架 | 无父子窗口、虚拟视图统一事件分派、HTML+CSS 声明界面 |
| HTML+CSS | 是 ViewModel 层,不是 View 层;View 由浏览器实现 |
| 小程序 | Native 程序在线化,依托 IM 这个新一代"操作系统",有商业闭环但标准不统一 |
| PWA | 海外版小程序,兼容 Web、技术化、无账号无支付、无中心 AppStore |
| WebAssembly | 打通各类语言与 Web 桥梁的尝试 |
一句话速记
浏览器把 View 层吞了、留下 HTML+CSS 这层 ViewModel 给你;小程序是有"账号-支付-AppStore"闭环的新一代 OS,PWA 是没有闭环、更像技术标准的海外版。
几条值得记住的判断
- 移动时代最佳的浏览器是 IM——封闭土壤才能长出 App 生态。
- 刀刃永远是两面的:拥抱微信的同时,每个厂商都在想怎么逃离。
- 小程序与 PWA 有代差,差在是否构成操作系统的商业闭环。
思考题
如果你要为自己的产品选一条移动端落地路径:小程序(背靠流量与闭环,但随时可能被掐全部)还是 PWA(自己说了算,但没有账号/支付/应用市场)?决定权重应该放在"流量"还是"控制权"上?

