【问题标题】:What polyfills are loaded using babel-polyfill使用 babel-polyfill 加载了哪些 polyfill
【发布时间】:2016-03-25 14:20:05
【问题描述】:

在我的入口点通过 babel 转换将 babel-polyfill 导入到 Browserify 之后,IE11 仍然在抱怨 Object.assign。除了 Object.assign 之外,我的项目还使用了许多其他新 API,例如 Number.isNan、HTMLElement.contains、KeyboardEvent.key 等。

我似乎找不到任何关于通过这个插件添加了哪些 polyfill 的文档。有谁知道这个插件填充了哪些 API,或者我在哪里可以找到一个完整的列表?我只能找到这句话:

“这将模拟一个完整的 ES6 环境”

这似乎并非如此,因为 Object.assign 仍未定义。

【问题讨论】:

    标签: javascript browserify babeljs polyfills


    【解决方案1】:

    查看 github 上的 source,它执行字符串填充方法和数组方法。换句话说,您引用的报价是营销用语。为你想要的东西使用另一个 polyfill。填充很多东西并不难,例如

    Number.isNaN = Number.isNaN || function(n) { return n !== n; };
    

    来自MDN

    if (typeof Object.assign != 'function') {
      (function () {
        Object.assign = function (target) {
          'use strict';
          if (target === undefined || target === null) {
            throw new TypeError('Cannot convert undefined or null to object');
          }
    
          var output = Object(target);
          for (var index = 1; index < arguments.length; index++) {
            var source = arguments[index];
            if (source !== undefined && source !== null) {
              for (var nextKey in source) {
                if (source.hasOwnProperty(nextKey)) {
                  output[nextKey] = source[nextKey];
                }
              }
            }
          }
          return output;
        };
      })();
    }
    

    【讨论】:

      【解决方案2】:

      查看 babel-polyfill 的来源时,它就在那里:

      // 19.1.3.1 Object.assign(target, source)
      var $export = _dereq_(33);
      
      $export($export.S + $export.F, 'Object', {assign: _dereq_(66)});
      },{"33":33,"66":66}],178:[function(_dereq_,module,exports){
      var $export = _dereq_(33)
      

      你使用的是哪个版本的 babel?你确定你在 browserify 中包含了正确的 babel 插件吗?

      【讨论】:

      • Babel 版本是 6。我正在加载的预设是 es2015 和反应。我需要单独包含 Object.assign 预设吗?
      • 另外,对于第 6 版,我还需要 babel-polyfill 吗?
      • 是的,babel 6 需要 babel-polyfill。所以如果我理解正确,这个问题是 IE11 特有的?这可能是一个令人讨厌的具体案例......
      猜你喜欢
      • 2016-11-21
      • 2017-11-26
      • 2015-10-09
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      相关资源
      最近更新 更多