详解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 相关文章推荐
Jquery+ajax请求data显示在GridView上(asp.net)
Aug 27 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
Jan 25 Javascript
js日期时间补零的小例子
Mar 05 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
基于javascript实现彩票随机数生成(升级版)
Apr 17 Javascript
KnockoutJs快速入门教程
May 16 Javascript
Javascript6中字符串的四个新用法分享
Sep 11 Javascript
JS实现焦点图轮播效果的方法详解
Dec 19 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
Dec 25 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
Jul 03 Javascript
微信小程序实现吸顶效果
Jan 08 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 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共享内存段示例分享
2014/01/20 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
新浪的图片新闻效果
2007/01/13 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
vue如何判断dom的class
2018/04/26 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
Python遍历目录的4种方法实例介绍
2015/04/13 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
美国折扣网站:jClub
2017/08/07 全球购物
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
广告传媒专业应届生求职信
2014/03/01 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
2015年公司新年寄语
2014/12/08 职场文书
工作调动申请报告
2015/05/18 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
openstack中的rpc远程调用的方法
2021/07/09 Python
Oracle中update和select 关联操作
2022/01/18 Oracle