web 系统兼容低版本浏览器

web 系统兼容低版本浏览器

web 前端或 H5 移动端在开发面向大众的 web 软件时,会不可避免的遇到处理浏览器兼容性的问题。

若在软件开发启动前,已明确要兼容的浏览器种类及相应的最低版本,这时前端技术选型需要考虑不同前端框架会带来这方面的影响,有些硬性指标需要关注的。

比如 vue2 双向绑定底层依赖的Object.defineProperty 只兼容 IE9 及以上版本,vue3 双向绑定底层依赖的Proxy直接放弃 IE 浏览器。废话不多说,切入正题,本文会大概通过以下三步骤介绍处理浏览器的兼容性问题。

  1. 收集正在或将要使用的已知 js API 兼容的浏览器及最低支持版本,取交集初步判断
  2. 大概确定要支持的浏览器种类及最低版本,使用 babel 和 polyfill 应对新语法和 jsapi
  3. 下载安装不同浏览器的不同版本,测试验证,解决 bug

为方便说明,这里以使用 vue3 技术栈为例展开介绍

1. 收集正在或将要使用的 js 新功能特性

查阅最新语法或 api 的浏览器兼容性,请访问 caniuse

特性功能\浏览器ChromeEdgeFirefoxSafiri
Webassembly57165211
Proxy49121810
resizeObserve64796913.1
replaceAll85857713.1
globalThis71796512.1
??85857914
esm61166011
import63796711.1
export61166010.1
es651155410

区分哪些是硬性指标(无法通过现有技术解决),哪些是高级语法,可降级处理;哪些是新 api,可通过 babel/polyfill 处理。

  • Proxy、webassembly 是硬性指标,不能低于此版本
  • resizeObserve、globalThis、es6 方法,是新 api,可借助 polyfill 兼容处理
  • ?? 属于新语法,可通过 babel 结合 preset/env 转译代码降级处理
  • import 和 export 支持按需加载,结合打包工具的tree-shaking功能,可极大提高性能

为兼容低版本浏览器,又可享受现代浏览器原生 api 带来的性能优势,综合考量,建议 chrome 64、edge 79、firefox 69 、safiri 13.1

2. babel+polyfill 兼容处理方案

此处参考 babel 练习

3. 下载安装不同浏览器的不同版本

付费方案:browserstack, 覆盖几乎全平台全浏览器

免费方案如下,折腾但省钱

Chrome

Firefox

mac 中可直接下载安装多个不同的版本。
历史版本下载地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值