你应该 polyfill 插件还是留给实现?
Should you polyfill plugins or leave it up to the implementation?
我的 Vue.js 插件提出了一个问题,要求在 IE10 的插件中为 Object.assign
捆绑一个 polyfill。我想知道这是否通常是此类事情的最佳实践。
这很简单,但会在具有本机支持的浏览器的插件中增加不必要的开销。将此留给实现以要求此类 polyfill 是否更好?
在我看来,您发布的插件不应超出其需要 运行。仅仅因为 一个用户的 应用程序需要 IE10 支持,并不意味着 每个用户的 都需要。
我能看到的包含 polyfill 的唯一情况是 Vue 本身对支持 IE10 采取强硬立场,从而产生 Vue 插件也遵循这一点的期望。但是,在大多数情况下,如果您的插件的用户需要一个 polyfill,他们应该没有任何理由不能自己将其添加到他们的项目中。
关于您对已经原生支持的浏览器中的 polyfill 的评论,通常最佳做法是在应用 polyfill 之前检查浏览器是否具有原生支持,因此插件只会在需要时不执行任何操作。示例:
if (typeof Object.assign !== 'function') {
Object.assign = myPolyfill
}
我的 Vue.js 插件提出了一个问题,要求在 IE10 的插件中为 Object.assign
捆绑一个 polyfill。我想知道这是否通常是此类事情的最佳实践。
这很简单,但会在具有本机支持的浏览器的插件中增加不必要的开销。将此留给实现以要求此类 polyfill 是否更好?
在我看来,您发布的插件不应超出其需要 运行。仅仅因为 一个用户的 应用程序需要 IE10 支持,并不意味着 每个用户的 都需要。
我能看到的包含 polyfill 的唯一情况是 Vue 本身对支持 IE10 采取强硬立场,从而产生 Vue 插件也遵循这一点的期望。但是,在大多数情况下,如果您的插件的用户需要一个 polyfill,他们应该没有任何理由不能自己将其添加到他们的项目中。
关于您对已经原生支持的浏览器中的 polyfill 的评论,通常最佳做法是在应用 polyfill 之前检查浏览器是否具有原生支持,因此插件只会在需要时不执行任何操作。示例:
if (typeof Object.assign !== 'function') {
Object.assign = myPolyfill
}