问题1:整个系统白屏,但不报错
原因
1、没有做路由懒加载。不做懒加载的话,默认是全部加载在首屏,ie浏览器性能差直接卡死。
2、ie无法识别一些es6+的api。Babel默认只转换新的js语法(如箭头函数),而不转换新的API,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等新的对象或者方法。
简单的说,兼容问题一般是IE 对于es6 的部分新对象、表达式,语法并不支持,解决方案是使用 babel-polyfill 来正常使用ES6。
解决
1、路由懒加载(或用es6语法亦可)
const Home = resolve => require(['../views/Home.vue'], resolve)
2、api兼容:我们使用一种叫做 Polyfill(代码填充,也可译作兼容性补丁)的技术。(可在main.js中直接引入,也可以在vue.config.js中的入口处合并)
方案1(代替babel-polyfill的方案推荐)
// 在main.js中引用下列包
import "core-js/stable";
import "regenerator-runtime/runtime";
方案2(更新到7之后就不维护了,亦可以用)
import "babel-polyfill";
问题2:个别路由页面白屏
1、请检查个别页面是不是有路由,有的话是不是懒加载方式,是不是语法兼容需要将import改为require方式引用
2、检查是否引用第三方npm依赖,该依赖里面有使用到es6+的api语法,如果有,需要将其显示的使用babel编译,配置如下(本人项目中是引用了vue-grid-layout,在项目中视情况添加vue.config.js文件中)
transpileDependencies:[/node_modules[/\\\\](ant-design-vue|vuex|vue-grid-layout)[/\\\\]/]
问题3:哪些依赖需要被显示的babel
配置位置在vue.config.js文件中的transpileDependencies属性,是一个数组,我们的组件库和一些第三方功能的私包,还有vuex这些是需要放在显示的babel里面的,因为polyfill是不会去编译node_modules里的东西的,所以我们需要显示的写出来告诉它,也可以根据报错来知道是哪个包有问题。
问题4:样式问题,功能问题
上述基本就解决ie无法使用的问题了,起码是能看能用了~~
样式问题:经过测试,可能会有一些样式的功能的问题,自己要换个写法去解决,例:
// 不支持合并写法
overflow: hidden auto;
// 需改成如下写法
overflow-x: hidden;
overflow-y: auto;
功能问题:那只能具体功能具体看了,基本影响功能的就是js的语法了,这个ie和标准浏览器的差别,网上一查就知道了,例:
火狐、谷歌没有window.event对象,一般写成:function handle(e){e = || event;}
更多推荐
ie11兼容方案(ant-design-vue在ie打开,系统白屏不报错)
发布评论