Polyfill

引言

最近的工作中业务方需要兼容IE浏览器,众所周知,IE这个反人类的东西,微软自己都抛弃了。谁叫甲方爸爸想要呢。使用过程中发现IE这东西吧很奇葩,常见的axios和ES6的一些常用的语法糖都不支持,总不能项目使用ES5重写吧。经过寻找发现了polyfill这东西。

原因就是使用到了ES6的语法,比如在IE浏览器中会出现“promise未定义“的问题

1.在项目中安装babel-polyfill

2.在main.js中引入 import "babel-polyfill"

3.修改配置文件,即在webpack.base.conf.js这个文件中加入代码 require("babel-polyfill")

Polyfill是什么

Polyfill 是一块代码(通常是 Web 上的 JavaScript),用来为旧浏览器提供它没有原生支持的较新的功能。

比如说 polyfill 可以让 IE7 使用 Silverlight 插件来模拟 HTML Canvas 元素的功能,或模拟 CSS 实现 rem 单位的支持,或text-shadow,或其他任何你想要的功能。(引用自MDN)

下面是对概念发明者的描述

那是我在2009 年撰写HTML5简介时的情景。当时我正坐在一家咖啡店(就像您所做的那样),构想一个单词能表达如下思想——“如果浏览器本身没有,则复制一个使用JavaScript(或Flash或其他任何方法)的API”。

对我来说,Shim意味着您可以添加一段代码来修复某些功能,但是大多数情况下,它拥有自己的API。我想要您可以插入一个东西并且默默地工作(还记得旧的shim.gif吗?它需要你手动插入图像来修复空白td单元格而我想要可以自动完成此操作的东西)。

我知道我所追求的不是逐步增强,因为我工作的基准需要JavaScript和最新技术。因此,该现有术语对我不起作用。

我还知道这不是优雅降级,因为如果没有本机功能和JavaScript(假设您的polyfill使用JavaScript),它将根本无法工作。

因此,我想说一个简单的词,并且可以使人对这件事会做的事情产生一个模糊的想法。Polyfill就这么出现在我的想法里,并且符合我的要求。Poly表示可以使用多种技术解决该问题-它不仅限于使用JavaScript完成,而且fill会填补浏览器中需要该技术的空白。它也并不意味着“旧的浏览器”(因为我们也需要填充新的浏览器)。

同样对我来说,产品Polyfilla(在美国包装)是一种糊剂,可以粘贴到墙壁上以覆盖裂缝和孔洞。我非常喜欢可视化我们如何修复浏览器的想法。墙壁平坦后,您可以随意绘画,也可以贴墙纸作为您内心的满足。

我收到了一些有关“应该更改单词”的反馈,但更多的是当时的社区需要单词,就像我们需要Ajax,HTML5,Web 2.0来实现我们的想法一样。不管这个词是否完美,都已证明它具有作用力,并且开发人员和设计师都了解这些概念。

示例

摘自MDN,你可以将这段代码插入到你的脚本开头,从而使你的 bind() 在没有内置实现支持的环境中也可以部分地使用bind。

if (!Function.prototype.bind) (function(){

  var slice = Array.prototype.slice;

  Function.prototype.bind = function() {

    var thatFunc = this, thatArg = arguments[0];

    var args = slice.call(arguments, 1);

    if (typeof thatFunc !== 'function') {

      // closest thing possible to the ECMAScript 5

      // internal IsCallable function

      throw new TypeError('Function.prototype.bind - ' +

            'what is trying to be bound is not callable');

    }

    return function(){

      var funcArgs = args.concat(slice.call(arguments))

      return thatFunc.apply(thatArg, funcArgs);

    };

  };

})();

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355