最近几个项目基本都是使用vue 2.x,也是经常碰到浏览器兼容性问题的处理,主要还是针对IE浏览器。Vue 官方对于IE 浏览器版本兼容情况的描述是IE9+, vuejs 本身以及生态的官方核心插件(VueRouter、Vuex等)均可以在 IE9 上正常使用。但是是什么导致在IE9甚至更高版本的IE浏览器中产生兼容问题呢?其中一个原因就是:版本较旧的浏览器并不支持ES6 规范,尤其是 IE 浏览器,即使是最高的 IE11 版本,对于ES6 规范也支持得并不全。
在IE9 的环境上,ES6 的部分新对象、表达式,并不支持,解决方案是使用 babel-polyfill 组件,它可以将 ES6 的代码翻译成低版本浏览器可以识别的 ES5 代码。
比如:项目中使用到http库axios,而axios是基于promise,promise是ES6中的一个新对象,IE9浏览器是不支持该对象的。
如下:在IE浏览器控制台执行
new Promise(function(){ });
控制台显示promise未定义。
本地调试程序时,浏览器便会出现如下报错:
为解决此类对ES6不支持的情况,需要引入 babel-polyfill 插件
1、 npm -i --save babel-polyfill
2、同时需要在main.js文件引入,
import 'babel-polyifll'
3、修改webpack配置文件webpack.base.conf.js
entry:{
app:['babel-polyfill','./src/main.js']
}
如此,该问题解决。如有问题,欢迎指正。