01|跨端总会一次次回来
如果把前五篇连起来看, 你会发现一件特别明显的事。
这些路线看上去差别很大:
FlashHybridReact NativePWAElectron
它们的宿主不同, 时代不同, 卖点不同, 失败方式也不同。
可它们底下始终都在反复回答同一个问题:
能不能少养几套世界?
也就是说, 写到最后最值得追问的, 已经不是:
“哪一个框架最后笑到了最后?”
而是:
为什么这个行业明明知道跨端永远有代价,却还是会一遍遍重新发明跨端?
这背后真正推动它不断重生的, 不是单点技术更新。
而是三层更深的力量一直没消失:
- 经济压力
- 平台边界
- 工程复杂度
只要这三层还在, 跨端就一定会继续回来。
只是名字和形态会变。
02|企业到底在买什么?
跨端最深的一层驱动力, 永远先是经济学。
因为只要多端现实一直存在, 企业就会持续面临这些问题:
- 一套业务要铺 iOS、Android、桌面、Web
- 多端协同成本高
- 发版节奏不一致
- 多套团队贵
- 招聘也分裂
这时候, 任何一种看起来能把人力复用率拉高的抽象层, 都会天然有吸引力。
所以跨端不是偶然冒出来的时尚词。
它更像一种周期性金融冲动:
企业会不断问,能不能用一个中间层,换回更少的人、更快的交付和更统一的产品节奏。
只要这笔账还有诱惑力, 跨端就不会退出历史。
这也是为什么每一代方案刚出来时, 总能迅速得到关注。
因为它们卖的从来不只是技术。
它们卖的是:
组织效率。
03|平台永远不肯把门彻底打开
可如果只有企业这一层冲动, 跨端也许真可能慢慢走向某种统一答案。
问题在于, 另一股力量也一直在:
平台不一样,而且平台也不想失去主权。
这里的平台差异, 从来不只是:
- 控件长得不一样
- 动画曲线不一样
- 某个 API 名字不一样
更深的差异其实在于:
- 生命周期
- 安全模型
- 分发路径
- 审核制度
- 支付利益
- 与开发者的关系
所以跨端之所以永远撞墙, 根本原因不是“工程师还不够聪明”。
而是:
你试图统一的,本来就不是几套长相不同的界面,而是几套利益、制度和宿主边界都不同的世界。
而平台一旦觉得某种抽象层开始威胁:
- 能力解释权
- 更新节奏
- 分发入口
- 平台税收
它就会马上把这个问题从技术话题升级成边界话题。
这也是为什么:
Flash会撞上 ApplePWA会不断碰到 App Store 与 WebKit 边界- 很多跨端路线都会在“接近平台核心处”突然变得更难
因为抽象层可以协商, 但主权很少轻易让渡。
04|复杂度到底去了哪里?
这是整套系列里最该反复记住的一句。
很多人看跨端史, 会不自觉用“老框架输给新框架”的思路去理解。
可那样会看得很浅。
因为真实发生的事更像是:
每一代新方案,都是把上一代最痛的复杂度挪走,然后在别处重新长出新的复杂度。
你回头看会特别清楚:
Flash把浏览器碎片吞掉,结果把运行时主权问题做大Hybrid把原生双端开发成本吞掉,结果把体验账单压给WebViewReact Native把WebView换掉,结果把复杂度压到桥接和生态协同Electron把桌面多平台差异吞掉,结果把资源税直接摆到用户机器上
所以跨端史真正最稳定的一条规律是:
复杂度永远都在。
争论只在于:
- 谁来扛
- 扛在哪一层
- 什么时候爆出来
只要这条规律不变, 跨端就不可能出现一个彻底免税的终局方案。
05|跨端注定没有终局
很多人内心其实一直在等一种答案:
会不会有一天, 某个方案终于足够成熟, 让跨端这件事彻底收束成标准现实?
理论上当然可以想象。
可现实里, 它至少要同时满足三件事:
- 主要平台能力和体验预期高度收敛
- 平台利益与分发利益高度一致
- 某种抽象层既足够统一,又几乎不制造新的性能税和组织税
这三件事几乎不可能同时成立。
第一件事已经很难。
第二件事更难。
因为平台之间不仅技术不同, 还各自有:
- 商业模型
- 审核逻辑
- 支付体系
- 生态绑定方式
第三件事则更像理想。
因为只要有抽象, 就必然会有:
- 映射成本
- 维护成本
- 性能成本
- 演进成本
也就是说, 跨端没有终局, 不是因为行业还没努力够。
而是因为它要终局, 本来就要求太多外部条件一起成立。
06|未来真正会稳定下来的,会是哪几层?
如果没有终局, 那有没有相对稳定的方向?
我认为有。
而且它已经越来越清楚了。
未来更可能稳定下来的, 不是那种高举高打的统一口号。
而是这种更分层的现实:
- 业务逻辑层尽量共享
- 设计系统层部分共享
- 数据模型和状态管理尽量共享
- 渲染层视场景决定
- 宿主能力层明确暴露差异
- 分发、审核、支付层继续强平台化
换句话说, 跨端更像会收束成一种:
选择性统一。
这听上去没那么浪漫。
却更接近真相。
因为它终于不再试图把所有问题塞进同一把锤子里。
它开始承认:
不是所有层都值得统一, 也不是所有差异都应该被藏起来。
这就是为什么今天很多成熟团队讨论跨端, 问的已经不是:
“要不要跨端?”
而是:
“跨到哪一层最划算?”
这其实就是跨端史最成熟的阶段性答案。
07|新一代框架总会继续出现
这条结论也很重要。
因为一旦你接受“跨端会长期存在,但不会终结”, 下一个问题自然就是:
那它为什么还会不断重生?
答案其实也不复杂。
因为决定“哪一层最适合统一”的条件, 从来都不是固定的。
它会随着这些东西变化:
- 硬件变强或变弱
- 宿主能力开放或收紧
- 平台政策变化
- 团队结构变化
- 工具链进步
- 某种语言或生态的人才供给变化
只要这些条件一变, 行业就会重新算一次账:
之前觉得太重的抽象,现在是不是可以承受了?
之前看起来很划算的统一,现在是不是税太高了?
于是新一代跨端就会再次出现。
它看起来像新框架革命。
可本质上更像:
外部条件变化后,对“统一哪一层最划算”这道题的一次重新求解。
所以跨端的“重生”, 并不神秘。
它只是现实重新算账的结果。
08|最后到底该把跨端看成什么?
如果把前面五篇都读完, 最后最值得带走的, 我觉得就是这句:
跨端不是一条通向终局的路线,而是一场不会结束的复杂度协商。
这句话里面有四层意思。
第一, 企业会持续想买统一开发。
第二, 平台会持续守住宿主边界和入口权。
第三, 抽象层会持续重分配复杂度,而不是消灭复杂度。
第四, 真正成熟的跨端,不是统一一切,而是知道哪些层该统一,哪些层该暴露。
所以这套《跨端江湖》如果只记最后一句, 我希望是这句:
跨端不会终结,因为企业想统一、平台想控制、工程想降复杂度、用户又不肯为抽象层税无限买单;这四股力量谁也不会退场,所以跨端永远只会从“统一一切”的幻觉,回到“选择性妥协”的现实。
如果把整套系列压缩成六句话
Flash证明第三方运行时一旦太像平台,就会撞上平台收权。Hybrid证明统一开发最容易把体验账单压给宿主浏览器。React Native证明现代跨端真正成熟的标志,是主动收缩承诺。PWA证明开放 Web 一旦太像 App,就会碰到平台入口边界。Electron证明很多企业宁可为资源税买单,也要换统一组织。- 整条跨端史最终证明:复杂度从来没有消失,它只是在不同层之间搬家。
编者注(事实核对):本篇为系列收束,前半部分基于前五篇涉及的一手材料与历史节点作综合判断;后半部分关于“跨端不会有终局、只会走向分层共享与选择性统一”的论述,属于在多条技术史、平台政策、运行时代价和组织实践之间作出的系列总判断。
参考与延伸阅读
Thoughts on Flash
https://web.archive.org/web/20100502021750/http://www.apple.com:80/hotnews/thoughts-on-flash/Introducing React Native
https://legacy.reactjs.org/blog/2015/03/26/introducing-react-native.htmlUpdate on apps distributed in the European Union
https://developer.apple.com/support/dma-and-apps-in-the-eu/Performance | Electron
https://electronjs.org/docs/latest/tutorial/performanceReducing Slack’s memory footprint
https://slack.engineering/reducing-slacks-memory-footprint/