在 angular2 / webpack 中强制执行 es6 浏览器垫片
Enforce es6 Browser shims in angular2 / webpack
我做了这个 "widget" 客户可以在他们的网站上加载 angular2。例如
<some-name config="clientcode"></some-name>
还有一些其他设置等,但这无关紧要,值是从本机元素中提取的,所有这些似乎在旧版浏览器上也能正常工作。
然而,一位客户使用了所有这些花哨的东西 polyfills/shims(没有检查它们是否存在,就像这样:
Object.extend(Function.prototype, {
argumentNames: function() {
var a = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1].replace(/\s+/g, "").split(",");
return 1 != a.length || a[0] ? a : []
},
bind: function() {
if (2 > arguments.length && Object.isUndefined(arguments[0]))
return this;
var a = this
, b = $A(arguments)
, c = b.shift();
return function() {
return a.apply(c, b.concat($A(arguments)))
}
}, ... });
这些与我的 angular2 小部件冲突,尤其是此代码段的最后 4 行(虽然不是最后一行)。
有趣的部分是,我一直在 RC5 上工作,我不得不推出它
回到。有谁知道我是否可以强制 angular2/webpack 包含那些垫片来覆盖我客户的垫片?并确保它始终嵌入到现有网站中?它会导致有点膨胀,但在这种情况下这不是什么大问题,因为它是 website/service 人们会每月使用一次或可能每周使用一次。
如果该功能已经存在,通常不会应用 polyfill(特别是 core-js
)。
如果问题可以缩小到 bind
,可以在向项目添加 polyfill 之前将其删除:
if (Function.bind && !/\[native code\]/.test(Function.bind)) {
delete Function.prototype.bind;
}
import 'core-js/shim';
我做了这个 "widget" 客户可以在他们的网站上加载 angular2。例如
<some-name config="clientcode"></some-name>
还有一些其他设置等,但这无关紧要,值是从本机元素中提取的,所有这些似乎在旧版浏览器上也能正常工作。
然而,一位客户使用了所有这些花哨的东西 polyfills/shims(没有检查它们是否存在,就像这样:
Object.extend(Function.prototype, {
argumentNames: function() {
var a = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1].replace(/\s+/g, "").split(",");
return 1 != a.length || a[0] ? a : []
},
bind: function() {
if (2 > arguments.length && Object.isUndefined(arguments[0]))
return this;
var a = this
, b = $A(arguments)
, c = b.shift();
return function() {
return a.apply(c, b.concat($A(arguments)))
}
}, ... });
这些与我的 angular2 小部件冲突,尤其是此代码段的最后 4 行(虽然不是最后一行)。
有趣的部分是,我一直在 RC5 上工作,我不得不推出它 回到。有谁知道我是否可以强制 angular2/webpack 包含那些垫片来覆盖我客户的垫片?并确保它始终嵌入到现有网站中?它会导致有点膨胀,但在这种情况下这不是什么大问题,因为它是 website/service 人们会每月使用一次或可能每周使用一次。
如果该功能已经存在,通常不会应用 polyfill(特别是 core-js
)。
如果问题可以缩小到 bind
,可以在向项目添加 polyfill 之前将其删除:
if (Function.bind && !/\[native code\]/.test(Function.bind)) {
delete Function.prototype.bind;
}
import 'core-js/shim';