前端專業術語: shim 和 Polyfill,瞭解下

在學習和使用 JavaScript 的時候,咱們會常常碰到兩個術語:shim 和 polyfill。它們有許多定義和解釋,意思相近又有差別。瀏覽器

Shim

Shim 指的是在一箇舊的環境中模擬出一個新 API ,並且僅靠舊環境中已有的手段實現,以便全部的瀏覽器具備相同的行爲。主要特徵:學習

  • 該 API 存在於現代瀏覽器中;
  • 瀏覽器有各自的 API 或 可經過別的 API 實現;
  • API 的全部方法都被從新實現;
  • 攔截 API 調用,並提供本身的實現;
  • 是一個優雅降級。

Polyfill

polyfill 是一段代碼(或者插件),提供了那些開發者們但願瀏覽器原生提供支持的功能。程序庫先檢查瀏覽器是否支持某個API,若是不支持則加載對應的 polyfill。主要特徵:spa

  • 是一個瀏覽器 API 的 Shim;
  • 與瀏覽器有關;
  • 沒有提供新的API,只是在 API 中實現缺乏的功能;
  • 以只須要引入 polyfill ,它會靜靜地工做;

shim 的概念要比 polyfill 更大一些,能夠將 polyfill 理解爲專門兼容瀏覽器 API 的 shim 。簡單的說,若是瀏覽器X支持標準規定的功能,那麼 polyfill 能夠讓瀏覽器 Y 的行爲與瀏覽器 X 同樣。插件

相關文章
相關標籤/搜索