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 相关文章推荐
JavaScript 设计模式之组合模式解析
Apr 09 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
Apr 16 Javascript
jquery实现图片水平滚动效果代码分享
Aug 26 Javascript
js实现下拉列表选中某个值的方法(3种方法)
Dec 17 Javascript
js判断文本框输入的内容是否为数字
Dec 23 Javascript
jquery文字填写自动高度的实现方法
Nov 07 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
Jan 09 Javascript
微信小程序日期时间选择器使用方法
Feb 01 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
Sep 14 Javascript
js打开word文档预览操作示例【不是下载】
May 23 Javascript
vue实现图片懒加载的方法分析
Feb 05 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
Nov 13 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按百分比生成缩略图的代码分享
2014/05/10 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
学习ExtJS border布局
2009/10/08 Javascript
JavaScript 数组循环引起的思考
2010/01/01 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
简单谈谈Python流程控制语句
2016/12/04 Python
Python实现k-means算法
2018/02/23 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
在python中画正态分布图像的实例
2019/07/08 Python
python如何删除文件中重复的字段
2019/07/16 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
在python3中实现更新界面
2020/02/21 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
解决Django no such table: django_session的问题
2020/04/07 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
高中学生干部学习的自我评价
2014/02/21 职场文书
三年级学生评语大全
2014/12/26 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
公司会议开幕词
2015/01/29 职场文书
销售口号霸气押韵
2015/12/24 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python