javascript中的shim和polyfill概念區別

關於在javascript中出現的兩個術語 shim以及ployfill的解釋,

shim

首先關於shim的解釋是這樣的,在將一個新API調入到一箇舊環境中,通過shim來在舊環境中模擬出一個新API,而且依靠舊環境已有的手段來實現,以便所有的瀏覽器具有相同的行爲。

主要特徵在於:

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

ployfill

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

  • 是一個瀏覽器 API 的 Shim;
  • 與瀏覽器有關;
  • 沒有提供新的API,只是在 API 中實現缺少的功能;
  • 以只需要引入 polyfill ,它會靜靜地工作;
    shim 的概念要比 polyfill 更大一些,可以將 polyfill 理解爲專門兼容瀏覽器 API 的 shim 。簡單的說,如果瀏覽器X支持標準規定的功能,那麼 polyfill 可以讓瀏覽器 Y 的行爲與瀏覽器 X 一樣。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章