在JavaScript的世界里,有兩個詞經(jīng)常被提到,shim和polyfill.它們指的都是什么,又有什么區(qū)別?
shim
shim是一個庫,它將一個新的API引入到一個舊的環(huán)境中,而且僅靠舊環(huán)境中已有的手段實現(xiàn)。
polyfill
polyfill就是一個用在瀏覽器API上的shim.我們通常的做法是先檢查當(dāng)前瀏覽器是否支持某個API,如果不支持的話就加載對應(yīng)的polyfill.然后新舊瀏覽器就都可以使用這個API了.
術(shù)語polyfill來自于一個家裝產(chǎn)品Polyfilla:Polyfilla是一個英國產(chǎn)品,在美國稱之為Spackling Paste(譯者注:刮墻的,在中國稱為膩子).記住這一點就行:把舊的瀏覽器想象成為一面有了裂縫的墻.這些[polyfills]會幫助我們把這面墻的裂縫抹平,還我們一個更好的光滑的墻壁(瀏覽器)Paul Irish發(fā)布過一個Polyfills的總結(jié)頁面“HTML5 Cross Browser Polyfills”.es5-shim是一個shim(而不是polyfill)的例子,它在ECMAScript 3的引擎上實現(xiàn)了ECMAScript 5的新特性,而且在Node.js上和在瀏覽器上有完全相同的表現(xiàn)(譯者注:因為它能在Node.js上使用,不光瀏覽器上,所以它不是polyfill).
轉(zhuǎn)自:百度知道