首页 » JavaScript » JavaScript术语

JavaScript术语

shim和polyfill

shim的意思是在一个老(旧)环境中模拟出一个新API,有时也叫做shiv,例如著名的html5shiv库。

polyfill的意思和shim差不多,2010年10月份Remy Sharp引进了这个概念,一个polyfill是一段代码或插件,用来提供浏览器不能提供的功能。程序库先检查浏览器是否支持某个API,如果不支持则加载对应的polyfill。

polyfill这个词最早来自居室装修领域,是一个英国产品,在美国称为Spackling Paste(刮墙用的,Spackle是美国抹墙粉的一个品牌。在中国称为腻子或填泥,腻子英文是putty,而填泥英文是filler)。可以这样理解:把旧的浏览器想象成一面有了裂痕的墙,这些polyfill会帮助我们把这面墙的裂痕抹平,桓我们一个光滑的墙壁。

shim的概念要比polyfill更大一些,可以将polyfill理解为专门兼容浏览器API的shim。

Remy这样帮我们理解polyfill:

如果浏览器X支持标准规定的功能,那么polyfill可以让浏览器Y的行为与浏览器X一样。

有人给Remy留言说,为什么不干脆美国化,把这种脚本称为Spackle?Remy答曰:因为我是英国人。 ;-)

参考

[译] shim和polyfill有什么区别

HTML5逸事:一袋“腻子粉”的故事

分享

0