【问题标题】:Shim vs. Sham: What is the difference?Shim vs. Sham:有什么区别?
【发布时间】:2015-02-15 00:17:36
【问题描述】:

shim 和 a sham 有什么区别?

是否包含 es5-shim.min.js 和 es6-shim.min.js 就足够了,还是我也应该包含 es5-sham.min.js 和 es6-sham.min.js?

【问题讨论】:

  • 我希望能够在所有浏览器中盲目支持尽可能多的 ES5 和 ES6 功能。这样更有帮助吗?
  • @garbanzio:我认为这不是明智的做法。您将无法盲目使用所有功能(因为并非所有功能都可以模拟),因此无论如何您都必须检查每个功能。当你这样做的时候,你不妨决定是否需要这些骗局。

标签: javascript ecmascript-5 ecmascript-6 polyfills


【解决方案1】:

根据this Github page,垫片包括所有忠实代表 ES5 功能的猴子补丁。

换句话说:您可以像使用 ES5 一样使用这些文件提供的功能。

但是,假程序包含无法用其他代码模拟的那些功能。它们基本上提供 API,因此您的代码不会崩溃,但它们不提供实际功能。

你需要哪些?这取决于您如何编写代码。如果您只使用 shims 提供的功能,请包含该功能。如果您还想(可选地)使用 shams 中的功能,那么您需要这两个功能。

【讨论】:

  • Wikipedia page on polyfills 也非常简洁地描述了它。
  • 谢谢。以下是我从上面提到的两个来源收集到的信息:来自 ES5 github repo... “在很多情况下,这意味着这些骗局会导致许多 ES5 方法静默失败。请仔细决定这是否是你想要的。”来自维基百科...“es5-sham.js 包含其他方法的部分实现,这些方法过于依赖底层引擎而无法准确工作。”我还可以看到 repo 中的 sham/shim 支持哪些功能。更有帮助的是,如果有人知道在添加 sham 时通常由 shim 支持的哪些功能会中断。
  • 我还没有具体尝试过,但是如果 shams 中的任何东西破坏了 shims 中的任何东西,我会认为这是一个错误。
猜你喜欢
  • 2011-05-23
  • 1970-01-01
  • 2018-04-20
  • 2014-07-01
  • 2021-07-16
  • 2013-03-18
  • 1970-01-01
  • 2013-01-15
相关资源
最近更新 更多