一文搞懂前端兼容问题

本文探讨了前端开发中的兼容性问题,重点关注iOS与Safari、Android与Chrome的适配,包括JavaScript的语法兼容性和浏览器特性。作者强调了iOS版本与Safari的对应关系,Android的碎片化挑战,以及现代浏览器与经典浏览器的划分。同时,推荐使用开源项目如browserslist来确保兼容性,并提供了适应性配置建议,如参考国民级APP的最低支持度,根据业务场景和用户数据调整适配策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于大部分开发者来说,版本兼容是一件存在感很低的事情,因为它在绝大部分情况下都是一行配置,在一些前端工具链(例如 Babel、CoreJS,Autoprefixer 等工具)的帮助下适配到目标浏览器,只会在一些大的 break change 事件(例如 Vue3 必须在支持 Proxy 的现代浏览器下才能运行)下才会关注这件不起眼的事情。

但当你稍微研究一下的时候,才会发现这块儿内容知识非常杂,因为版本兼容的相关知识没有那么多内在逻辑性,很多细碎的知识点散落在在各个商业公司的博弈和版本变更中。前段时间因工作需要对部分语言/浏览器特性重点关注了一下,以此文做一下记录。

本文主要记录了移动端的版本适配问题,未对桌面端做更多的研究,后面有可能补充相关内容。

1.iOS & Safari

iOS 和 Android 虽然都是一年更新一个大版本,但受益于生态的封闭性,iOS 的更新率极高,基本上最近的两个版本就能覆盖 95% 以上的人群。

例如 Apple 官方统计[1],截止到 2022-05-31,Apple 四年内推出的新机型中,iOS 15 已经有 89% 的装机率,iOS 14 也有 10% 的装机率;而在所有历史机型里,iOS 15 和 iOS 14 加起来也有 96% 的装机率,隔壁 Android 都羡慕哭了:

为什么如此关注 iOS 的版本号?因为 iOS 版本基本上和 Safari 版本一一对应的,例如 iOS 15.6 上安装着 Safari 15.6iOS 14.5 上安装着 Safari 14.1,具体的映射关系可见 MDN 的映射表[2],或者可以看 core-js: SafariToIOS[3],所以我们基本上只要比对 iOS 版本号即可。

另外一个问题是,有一定 C 端开发经验的开发者可能还会关注 iOS 上运行的是 UIWebView 还是 WKWebView,在 2022 年这个时间点其实已经不需要关注了,因为 Apple Store 已经发过公告[4],2020 12 月之后已经禁止含 UIWebView 的 APP 上架了,所以 iOS 平台只有 WKWebView 这一个 WebView 了,而且它兼容性也不错[5],最低支持到 iOS 8

2.Android & Chrome

说完 iOS 我们再谈谈 Android。因为两个操作系统的发展策略不同&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值