IE11下处理Promise及Vue的单项数据流问题


Posted in Javascript onJuly 24, 2019

最近我开发的公司的竞赛网站被发现在IE11下排行榜无数据,但是在其他浏览器没问题,我然后打开控制台一看,发现了如下错误:

IE11下处理Promise及Vue的单项数据流问题

真是醉了,然后发现有三个可行的方案:

直接采用 polyfill

在index.html中

<script src = "https://cdn.polyfill.io/v2/polyfill.min.js"></script> 
或 <script type="text/javascript" src ="https://cdn.polyfill.io/v2/polyfill.min.js?features=es6"></script>

手写 js 脚本判断一下

<script type="text/javascript">
 function isIE() {
  if (!!window.ActiveXObject || "ActiveXObject" in window) {
  return true;
 } else {
 return false;
 }
}
if (isIE()) {
 var script = document.createElement('script');
 script.type = 'text/javaScript';
  script.src = 'js/bluebird.min.js'; // bluebird 文件地址
  // http://cdn.jsdelivr.net/bluebird/3.5.0/bluebird.min.js
 document.getElementsByTagName('head')[0].appendChild(script);
}

</script>

安装新的依赖

1、npm install --save babel-polyfill

2、在main.js文件的顶部引入 import "babel-polyfill"

3、在build目录下webpack.config.js文件设置入口改为如下
(如果你的项目用的是脚手架,在在build目录下webpack.base.config.js文件更改入口)

model.exports={
entry:{
 app: ["babel-polyfill",'./src/main.js']
 }

Vue 提倡的单项数据流

在写 vue 组件的过程中,经常会遇到这样的情形:子组件需要的参数以 props 属性里面的 prop 来获得,父组件通过具名的 prop 来把子组件需要的内容传递给子组件,而且 Vue 提倡数据流的方向只能由父组件流向子组件。当父组件的数据发生变化时去通知子组件更改相应的属性,而不能反过来,子组件的变化影响到父组件,这种行为是被禁止的,因为这样会导致数据混乱不易于定位错误。

虽然经常写着写着子组件就想图省事,子组件直接去改变父组件的状态了,但是会报错如下:

IE11下处理Promise及Vue的单项数据流问题

那么,子组件为了更改父组件的状态, Vue 提供了两种常见的解决办法:

通过 data 中的变量将需要的 prop 初始化

props: ['initialCounter'],
data: function () {
 return {
 counter: this.initialCounter
 }
}

使用需要处理的 prop 来定义一个计算属性 computed

props: ['size'],
computed: {
 normalizedSize: function () {
 return this.size.trim().toLowerCase()
 }
}

当然子组件要想和父组件去进行通信,也可以简单的采用如下方式

$emit 触发事件,父组件接受子组件发布的事件,然后就顺理成章的在父组件里面修改自身的变量了。
关于node中的 module.exports 、 exports 和ES6中的 export 、 export default

node 中,每个文件都被视为一个独立的模块,对外只暴露一个接口(其实就是一个对象): module.exports

module 代表当前模块,它的 exports 属性负责与外界进行交流,加载一个外来的模块就是加载该模块的 module.exports 属性的内容。

// add.js
var temp = 1;
var addNumber = function (value) {
 return value + 1;
};
module.exports.temp = temp;
module.exports.addNumber = addNumber;
// 另一个js文件引用了add.js
var add = require('./add.js') 
console.log('add is', add) // add is { temp: 1, addNumber: [Function: addNumber] }
console.log(add.temp) // 1
console.log(add.addNumber(1)) // 2

通常为了方便,每个 node 模块头部有默认的一句话: var exports = module.exports

为了方便可以直接在 exports 对象上加方法,也可以实现对外的改变,但是不可以将 exports 变量指向其它变量,一旦这样做了会切断 exports 和 module.exports 之间的联系。

但是, node 采用了 CommonJs 规范, ES6 采用新规范 import 和 export (对应于 require 和 exports )

//ES6 example.js
var temp = 'temp'
export {temp} //同样的,export出来的只是一个接口,必须有大括号,除非使用下面介绍的export default
//export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。通俗来讲,不能使固定的值,应该是一个变量或者一个函数
// use example
import {example} from './example.js'
console.log(example.temp) // 'temp'
// 同样的,ES6也有默认的export写法
export default var temp = 'new'

总结

以上所述是小编给大家介绍的IE11下处理Promise及Vue的单项数据流,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
JavaScript设计模式之外观模式介绍
Dec 28 Javascript
详解AngularJS中的依赖注入机制
Jun 17 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
Nov 30 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
Jan 05 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
关于JS与jQuery中的文档加载问题
Aug 22 jQuery
JavaScript编写棋盘覆盖代码详解
Aug 28 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
Oct 20 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
Jun 25 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
Aug 10 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
Oct 23 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
Jul 23 #Javascript
详解Vue中的基本语法和常用指令
Jul 23 #Javascript
js如何获取访问IP、地区、当前操作浏览器
Jul 23 #Javascript
node.js express框架简介与实现
Jul 23 #Javascript
js微信分享接口调用详解
Jul 23 #Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
Jul 23 #Javascript
vue 地区选择器v-distpicker的常用功能
Jul 23 #Javascript
You might like
如何使用PHP中的字符串函数
2006/11/24 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
python对XML文件的操作实现代码
2020/03/27 Python
用Python开发app后端有优势吗
2020/06/29 Python
python空元组在all中返回结果详解
2020/12/15 Python
基于Python实现天天酷跑功能
2021/01/06 Python
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
生产部经理岗位职责
2013/12/16 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
团拜会主持词
2015/07/04 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis