微信小程序为什么不用HTML5、CSS,自己搞了个WXML、WXSS,很多框架用不了,好处一点不知道?

微信小程序为什么不用HTML5、CSS,自己搞了个WXML、WXSS,很多框架用不了,好处一点不知道,以前项目根本没法移植,而且我们习惯的jquery、auicss、图标等完全用不了,也没见WXML、WXSS有什么好处,完全理解不了。。。
关注者
376
被浏览
43620

谢邀,说白了还是「抽象与封装」,封装之后一切便是 implementation detail,可以做的事情就很多了。细分到小程序中的好处,其实我觉得我在 如何客观的评价「小程序」的体验? 中已经 cover 到了:

  1. 可以借此「以原生组件替换 web 组件的方式进行优化」:每一个使用原生 UI 渲染、或在自定义 WebView 中优化过的组件都对应着 Mobile Web 中的一个老大难问题。比如在 iOS 上让顶部或底部的 Tab Bar "Fixed",比如视频的自动播放与控制力,比如地图、textarea 等,可以说利用有限的资源显著提高了小程序的可用性。
  2. 约束:由于 Web 前端开发者的良莠不齐,小程序通过限定一组 Web 技术的子集,可以很好的约束开发者写出性能与体验不低于基线的代码,这与 Google 的 AMP 异曲同工。
  3. 后续优化的可能:由于小程序中的 wxml 与 wxss 都是比较 high-level 的抽象,所以微信团队可以在不影响开发者源代码的情况下,通过升级 Runtime 与组件的实现不断优化小程序的性能,比如完全迁移到类似 React Native 或 Weex 这样的 JS-to-Native 方案。

还是那句话:

「All problems in computer science can be solved by another level of indirection」

关于我不敢定论的政治原因,@TooBug 说的很清楚了。如果微信是真的想要 polyfill PWA 的话,一定不会这么设计的。