详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)


Posted in Javascript onJanuary 07, 2019

由于Iview编译使用到了es6的一些新特性,Internet Explorer所有版本中都会报错,缺少includes、findIxdex等问题。

本人研究涉及到的环境:VueCli3.2 + iview 3.1.5

在IE中不支持ES6的新特性,例如:includes、findIndex……

以下方案可以解决该问题:

1.  Github iview仓储Issues中提到的

改编译范围请用 transpileDependencies: [‘iview'],不要用 include.add,因为默认配置里用了 exclude,在 webpack 中,多个条件同时存在时需要每个条件都满足才执行 rule。

但是加了这个选项后在所有浏览器里都会报错,因为 iView 里这个文件不兼容 ES Module。该文件是用很旧版本的 UMD 格式打包的,新版本 UMD 修复了报错的问题,但没有解决和 ES Module 互操作的问题。在 Webpack 4 中,ES Module 不能和 CommonJS / UMD 混用。

所以这里本质上是 iView 对 Webpack 4 支持的问题,让他们把源码全部转成 ES Module 就好了。
在vue.config.js中添加transpileDependencies: [‘iview']后,可以让bable编译过程中检查iview的代码,自动添加代码中用到的polyfill。

但是由于iview中有一个文件使用的UMD打包,所以编译后的代码还是在运行环境中报错,导致项目无法使用。

该方案虽然解决了ES6语法问题,但是实际使用会报错。

2.  直接给代码添加polyfill

修改bable.config.js使用 useBuiltIns: ‘entry'

module.exports = {presets: [ ['@vue/app', {useBuiltIns:'entry'} ] ]}

在Vue入口文件main中导入bable的polyfill

import'@babel/polyfill';

这种方案bable编译时,会自动导入目标浏览器(browserslist中配置)需要用到的polyfill,可以保证全局代码使用都可以新ES代码。但是,也许有些polyfill会一直用不到,额外增加了编译后的文件体积。

3.  使用balbe env,预置iview中所需要的polyfill(推荐做法)

修改bable.config.js 添加预导入的polyfill。目前我的项目中用到的polyfill有'es6.promise',‘es6.array.find-index',‘es7.array.includes',‘es6.string.includes'

module.exports = { presets: [ ['@vue/app', {
  debug:true,
  polyfills: [ 'es6.promise' , 'es6.array.find-index' , 'es7.array.includes' , 'es6.string.includes' ] 
 } ] ]}

这种方案依然使用Vue项目默认方案,不同的是在项目编译时,会导入polyfills中指定的polyfill,这样既可解决iview在ie中运行报错的问题。

上面中是我目前用到的几polyfill,如果需要其它铺垫,可以自行添加。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript CSS修改学习第六章 拖拽
Feb 19 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
Dec 25 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
May 12 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
原生js获取元素样式的简单方法
Aug 06 Javascript
浅谈jquery选择器 :first与:first-child的区别
Nov 20 Javascript
微信小程序实现多个按钮toggle功能的实例
Jun 13 Javascript
关于react-router的几种配置方式详解
Jul 24 Javascript
浅谈Redux中间件的实践
Jul 27 Javascript
在vue中使用echarts图表实例代码详解
Oct 22 Javascript
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 #Javascript
Node.js EventEmmitter事件监听器用法实例分析
Jan 07 #Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
Jan 07 #Javascript
jQuery实现的别踩白块小游戏完整示例
Jan 07 #jQuery
jQuery判断自定义属性data-val用法示例
Jan 07 #jQuery
jQuery实现的简单歌词滚动功能示例
Jan 07 #jQuery
微信小程序发送短信验证码完整实例
Jan 07 #Javascript
You might like
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
介绍Python的@property装饰器的用法
2015/04/28 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
Python中Qslider控件实操详解
2021/02/20 Python
高中班长自我鉴定
2013/12/20 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
内乡县衙导游词
2015/02/05 职场文书
老公婚前保证书
2015/02/28 职场文书
学生犯错保证书
2015/05/09 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
赢在中国观后感
2015/06/02 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
新手必备Python开发环境搭建教程
2021/05/28 Python
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python