前端开发中兼容性问题汇总
本文将前端开发中常用工具&框架(Vite、Uniapp、钉钉微应用、Vue、React)兼容性情况进行汇总,同时也收集了andorid版本对应的chrome版本信息。
浏览器平台/发布年份
年份 | Android | Chrome | Safari | Firefox | IE |
---|---|---|---|---|---|
2018 | 9.0 | 64 - 71 | 12(对应iOS12) | 58 - 64 | |
2017 | 8.0 - 8.1 | 56 - 63 | 11 | 51 - 57 | |
2016 | 7.0- 7.12 | 48 - 55 | 10 | 44 - 50 | |
2015 | 6.0 | 40 - 47 | 9 | 35 - 43 | |
2014 | 5.0 - 5.1 | 32 - 39 | 8 | 27 - 34 | |
2013 | 4.4 | 11 | |||
2012 | 10 | ||||
2012 | 9 |
Nuxt.js
Nuxt 3.4~3.8版本
理论上兼容到chrome49
需要安装插件
Install:
1 |
|
Add nuxt-vite-legacy to the modules section of nuxt.config.ts:
1 |
|
插件说明
https://github.com/IlyaSemenov/nuxt-vite-legacy
社区兼容方案:
https://github.com/nuxt/nuxt/issues/15464
Vue3
最新版本的 Vue (3.x) 只支持原生支持 ES2015 的浏览器。这并不包括 IE11。Vue 3.x 使用的 ES2015 功能无法在旧版本的浏览器中进行兼容,如果你需要支持旧版本的浏览器,请使用 Vue 2.x 替代。
https://cn.vuejs.org/about/faq.html#what-browsers-does-vue-support
浏览器兼容如下:
Chrome:51+;(import 兼容性 chrome63+, proxy 兼容性 49+。所以理论兼容性为 49+)
Edge:15+;
Safari:10+;
Firefox:54+;
Opera:38+;
IE:不支持
Safari on iOS:10+;
Android Browser:8+;(支持升级过webview内核的Android5、6、7)
详见:
https://caniuse.com/?search=ECMAScript%202015
https://cn.vuejs.org/about/faq.html#what-browsers-does-vue-support
React 18+
浏览器兼容如下:
Chrome:80+;(polyfills, 51+)
Safari:10+;
IE:不支持;(polyfills, IE 11+)
Safari on iOS: 10+;
Android Browser:8+;(支持升级过webview内核的Android5、6、7)
详见:
https://umijs.org/blog/legacy-browser
Vite
现代浏览器基准线变化
生产构建打包时会假定目标支持现代 JavaScript。默认情况下,Vite 的目标是支持 原生 ES 模块、原生 ESM 动态导入 以及 import.meta 的浏览器:
Chrome >=87
Firefox >=78
Safari >=13
Edge >=88
一小部分用户需要 @vitejs/plugin-legacy,它会自动生成兼容性 chunk 以及相应的 ES 语言功能的 polyfill。
https://cn.vitejs.dev/guide/migration-from-v2#modern-browser-baseline-change
使用@vitejs/plugin-legacy后最低支持 es2015,即 Chrome 51+
解决vite构架后报错 globalThis is not defined
https://github.com/vitejs/vite/discussions/7915
@vitejs/plugin-legacy
modernTargets
Default: ‘edge>=80, firefox>=72, chrome>=80, safari>=13.1, chromeAndroid>=80, iOS>=13.1’
常规配置
import legacy from ‘@vitejs/plugin-legacy’
1 |
|
https://www.npmjs.com/package/@vitejs/plugin-legacy
钉钉微应用
钉钉微应用(H5)chrome内核已经在2020年全量升级至69。
https://open.dingtalk.com/document/orgapp/micro-app-client-api-change-log-history
Uni-app
Uniapp Vue3版,兼容 chrome 63 以上版本(使用了script module 和 import),即 android 9 以上
https://caniuse.com/?search=import
Vue2
Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。
https://v2.cn.vuejs.org/v2/guide/installation.html#%E5%85%BC%E5%AE%B9%E6%80%A7
浏览器兼容如下:
Chrome:23+;(polyfills, Chrome 4+)
Edge:12+;
Safari:6+;
Firefox:21+;
Opera:15+;
IE:10+;(polyfills, IE 9+)
Safari on iOS:6+;
Android Browser:4.4+;(polyfills)
详见:https://caniuse.com/?search=ECMAScript%205
React 16+
react 16.x
浏览器兼容如下:
Chrome: 49+;
Edge: 13+;
Safari: 10+;
Firefox: 64+;
IE:9+;
Safari on iOS: 10+;
Android Browser:8+;(支持升级过webview内核的Android5、6、7)
详见:
https://v3.umijs.org/zh-CN/guide/boost-compile-speed
react 17.x
浏览器兼容如下:
Chrome:49+;
Safari:10+;
IE:11+;
Safari on iOS: 10+,
Android Browser:8+;(支持升级过webview内核的Android5、6、7)
Android版本及Webview内核
Android 版本 | WebView 内核版本 | 发布日期 |
---|---|---|
6.0 (API level 23) | Chromium 47 | 2015-10 |
7.0 (API level 24) | Chromium 53 | 2016-08 |
7.1 (API level 25) | Chromium 56 | 2016-10 |
8.0 (API level 26) | Chromium 63 | 2017-08 |
8.1 (API level 27) | Chromium 68 | 2017-12 |
9.0 (API level 28) | Chromium 69 | 2018-08 |
10 (API level 29) | Chromium 75 | 2019-09 |
11 (API level 30) | Chromium 81 | 2020-09 |
12 (API level 31) | Chromium 93 | 2021-10 |
12L (API level 32) | Chromium 93 | 2022-03 |
13 (API level 33) | Chromium 101 | 2022-08 |
2015年6月, ES2015(即 ECMAScript 6、ES6) 正式发布。ES2015 是该语言的一个显著更新,也是自 2009年 ES5 标准确定后的第一个重大更新。
ES6 提供了许多新特性,但并不是所有的浏览器都能够完美支持。好在目前各大浏览器自身也加快速度兼容 ES6 的新特性,其中对 ES6 新特性最友好的是 Chrome 和 Firefox 浏览器。
原文:JS - 各浏览器对ES2015/ES6的支持情况(桌面端、移动端、以及服务器)
一、桌面端浏览器对ES2015的支持情况
Chrome:51 版起便可以支持 97% 的 ES6 新特性。
Firefox:53 版起便可以支持 97% 的 ES6 新特性。
Safari:10 版起便可以支持 99% 的 ES6 新特性。
IE:Edge 15可以支持 96% 的 ES6 新特性。Edge 14 可以支持 93% 的 ES6 新特性。(IE7~11 基本不支持 ES6)
二、移动端浏览器对ES2015的支持情况
iOS:10.0 版起便可以支持 99% 的 ES6 新特性。
Android:8.0 支持 ES6 新特性
三、服务器对ES2015的支持情况
Node.js:6.5 版起便可以支持 97% 的 ES6 新特性。(6.0 支持 92%)