楼主你如果只是来吐槽,来骂这该死的内置浏览器怎么这么烂,没问题,我也想骂,各种排版不能用, WebGL 都不能用,简直坑爹,而且微信内置浏览器是提供 WebGL 接口的,就是调用之后没有任何效果,不是简直,就是坑爹。
但你抬头看看标题,标题是一个问句吧?
在
1. 所有 web 开发者都必须为每一个平台做 polyfill
2. 挑选一个弱一点但是在几乎所有机器上都能跑的版本,微信内置该版本的某浏览器,所有 web 开发者在这个基础上开发
两者中,我认为 2 是更负责任的
在附言中,你提到了一个前提:“ Android >= 5.0 ”,瞬间就少了 54.5%的用户 (数据来源: 2016/6/6 更新
https://developer.android.com/about/dashboards/index.html )
使用系统 webview , web 开发者需要适配 如下浏览器:
Android 2.x Webview; (市场占比 2%)
Android 4.0-4.3 Webview; (20.8%)
Android 4.4 (Chromium 30); (31.6%)(增加 GeoLocation 、 WebSocket 支持)
Android 4.4.3 (Chromium 33); (包含在上面)(增加 Vibration API 支持)
Android 5.x (Chromium 37+); (35.4%)(增加了 WebGL , WebRTC , WebAudio , WebComponent 支持)
Android 6.x+ (>= Chromium 43) (10.1%)
我的手机目前是 Android 6.0.1 (Chromium 51)
iOS Safari (很多版本)
各种厂商自己做的奇怪的浏览器适配
使用微信 WebView ,开发者需要适配如下浏览器:
QQ X5 内核(提供基础 HTML5 支持,部分新特性如 WebSocket ,部分 WebGL 支持)
iOS Safari (没得选)
Android >= 5 的基于 Chromium 的 WebView
你觉得哪个比较简单?
为何使用内置浏览器(注意,微信不是“内置 WebView ”,是内置一个“浏览器内核”),而不是直接使用基于 Chrome 的 WebView
1. 54.5%的安卓机没有该功能
2. 然后就没有然后了
为何使用内置浏览器而不是使用系统 WebView 呢
你要谈技术,那就谈技术
举个例子, WebSocket ,我在 Android 4.1 的机器上,用微信可以使用 WebSocket ;而 Android WebView 只有 Android >=4.4 才支持 WebSocket
再来一个, Android 2.x 的 WebView 不支持 position:fixed 和 overflow:hidden ,你喜欢么?
安卓 webview 的坑很多,如果你真的做的话,你会后悔产生“用 polyfill 解决这些问题”的想法的
为何内置 QQ X5 内核,不内置一个 Chrome
1. Chrome 打包 zip , 50MB ,(比微信大)
2. 然后就没有然后了
你使用最新的语法,然后来兼容老浏览器,这除了给自己开发带来快感(和恶心感),还有什么其他的好处? polyfill 肯定是需要用原生实现来实现的(如果能实现),必然是有性能损失的。
关于你说的产品观,如果你是个人开发者,或者是个创业者,凭热情和自己的想法活动,或者说你面对的平台比较稳定,你这么做没有问题;如果是面向所有用户的公司行为,我认为稳定是高于对 bleeding edge 的技术的热情的
举个例子吧,我现在维护的项目里,有一个是针对我们在桌面应用内置 Chromium 浏览器的,版本统一是 Chromium 49 ,我可以在这里面非常自由地使用各种高级语法;而有另一个项目是针对微信用户开发的,开发的时候自然就得小心谨慎
微信是一个商业产品,做出来是给用户用的,不是给开发者狂欢的