前端“黑話”polyfill

来源:https://www.cnblogs.com/shsxt/archive/2018/01/12/8277618.html
-Advertisement-
Play Games

前言 在Web前端開發這個日新月異的時代,總是需要閱讀一些最新的英文技術博客來跟上技術的發展的潮流。而有時候會遇到一些比較高頻的“黑話”,在社區裡面可能已經是人人皆知的“共同語言”,而你接觸的少就偏偏看不懂。就像現在幾乎所有中國人都知道duang是什麼東西,但是一個剛學中文的外國人看到以後可能就一頭 ...


前言

Web前端開發這個日新月異的時代,總是需要閱讀一些最新的英文技術博客來跟上技術的發展的潮流。而有時候會遇到一些比較高頻的黑話,在社區裡面可能已經是人人皆知的共同語言,而你接觸的少就偏偏看不懂。就像現在幾乎所有中國人都知道duang是什麼東西,但是一個剛學中文的外國人看到以後可能就一頭霧水。



黑話也是要學習的,本文收集各種Web開發的黑話。這裡先介紹兩個。

Polyfill

Polyfill或者Polyfiller,是英國Web開發者 Remy Sharp 在咖啡店蹲坑的時候拍腦袋造出來的。當時他想用一個詞來形容"用JavaScript(或者Flash之類的什麼鬼)來實現一些瀏覽器不支持的原生API"。Shim這個已經有的辭彙第一時間出現在他的腦海裡。但是他回頭想了一下Shim一般有自己的API,而不是單純實現原生不支持的API。苦思冥想一直想不到合適的單詞,於是他一怒之下造了一個單詞Polyfill。除了他自己用這個詞以外,他還給其他開發者用。隨著他在各種Web會議演講和他寫的書《Introducing HTML5》中頻繁提到這個詞,大家用了都覺得很好,就一起來用。

Polyfill的準確意思為:用於實現瀏覽器並不支持的原生API的代碼。

例如,querySelectorAll是很多現代瀏覽器都支持的原生Web API,但是有些古老的瀏覽器並不支持,那麼假設有人寫了庫,只要用了這個庫, 你就可以在古老的瀏覽器裡面使用document.querySelectorAll,使用方法跟現代瀏覽器原生API無異。那麼這個庫就可以稱為Polyfill或者Polyfiller。
好,那麼問題就來了。jQuery是不是一個Polyfill?答案是No。因為它並不是實現一些標準的原生API,而是封裝了自己API。一個Polyfill是抹平新老瀏覽器 標準原生API 之間的差距的一種封裝,而不是實現自己的API。
已有的一些Polyfill,如 Polymer 是讓舊的瀏覽器也能用上 HTML5 Web Component 的一個Polyfill。FlashCanvas是用Flash實現的可以讓不支持Canvas API的瀏覽器也能用上Canvas的Polyfill。
 

Shim和Polyfill

在JavaScript的世界里,有兩個詞經常被提到,shim和polyfill.它們指的都是什麼,又有什麼區別?

一個shim是一個庫,它將一個新的API引入到一個舊的環境中,而且僅靠舊環境中已有的手段實現

一個polyfill就是一個用在瀏覽器API上的shim.我們通常的做法是先檢查當前瀏覽器是否支持某個API,如果不支持的話就載入對應的polyfill.然後新舊瀏覽器就都可以使用這個API了.術語polyfill來自於一個家裝產品Polyfilla:
Polyfilla是一個英國產品,在美國稱之為Spackling Paste(譯者註:刮牆的,在中國稱為膩子).

記住這一點就行:把舊的瀏覽器想象成為一面有了裂縫的牆.這些[polyfills]會幫助我們把這面牆的裂縫抹平,還我們一個更好的光滑的牆壁(瀏覽器)

Paul Irish發佈過一個Polyfills的總結頁面“HTML5 Cross Browser Polyfills”.es5-shim是一個shim(而不是polyfill)的例子,它在ECMAScript 3的引擎上實現了ECMAScript 5的新特性,而且在Node.js上和在瀏覽器上有完全相同的表現(譯者註:因為它能在Node.js上使用,不光瀏覽器上,所以它不是polyfill).

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用android studio開發程式時,有時會出現 waiting for debugger 卡住界面,軟體無法正常debug運行的情況,很多網友分享了一些解決辦法,比如: 1 打開cmd進入命令行,進入adb所在目錄先後執行adb kill-server,adb start-server。 2 ...
  • 由於業務需要,需要將開發的App從一個賬號(A賬號)轉移到另一個賬號(B賬號),這裡簡單介紹一下轉讓流程 ...
  • 1.先構建WrapRecyclerAdapter 2.構建WrapRecyclerView 我們最好還是模仿ListView的結構搞就搞到西,自定義一個WrapRecyclerView,可以添加刪除頭部和底部View,這個就比較簡單 3.使用: ...
  • 測試的時候找個自己封裝的方法或UI控制項就可以了 這裡用我剛封裝的Redirect重定向的請求體為例 1, 在github上創建一個Redirect,重要:記得選擇開源協議 (MIT)(如果木有GitHub那先百度一下) 2, 使用 Github Desktop Clone (克隆) Redirect ...
  • 1、JavaScript概念 JavaScript是腳本語言; 編寫之後,可以直接運行(缺失了編譯的過程) 2、JavaScript發展 LiveScript => JavaScript => Jscript => ECMAScript(腳本語言的標準) || || || || 95年網景公司; 網 ...
  • 我有罪。。。昨天遺留的資料庫的問題還沒有解決,而且今天也沒寫js代碼…… 這兩天主要在看DOM的視頻,其實DOM的用法大概懂一點,但是一直沒有系統完整的去學。。。 還是對著文檔來寫吧,就這樣聽老師講了一遍其實印象並不是很深刻。 children 返回的是數組,所以子元素存放的數組 parentNod ...
  • 本文最初發表於 "博客園" ,併在 "GitHub" 上持續更新 前端的系列文章 。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 background系列屬性 常見背景屬性 CSS樣式中,常見的背景屬性有以下幾種:(經常用到,要記住) 設置元素的背景顏色。 將圖像設置為背景。 設置 ...
  • 一 對象解構 對象解構語法在賦值語句的左側使用了對象字面量 type與name標識符既聲明瞭本地變數,也讀取了對象的相應屬性值。 解構賦值表達式的值為表達式右側的值。當解構表達式的右側的計算結果為null或者undefined時,會拋出錯誤。 預設值 當你使用解構賦值語句時,如果所指定的本地變數在對 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...