20 世紀 90 年代初期,圖靈獎得主 Tim Berners-Lee 締造了計算機領域最偉大的發(fā)明之一 —— 萬維網(wǎng),實現(xiàn)了 HTTP 代理與服務器的第一次通信。他定義了 Web 的三大基礎技術 URI、HTTP 和 HTML:URI 解決文檔的路由表示和尋址;HTTP 協(xié)議解決文檔的傳輸形式;HTML 解決文檔的組織形式。從設計原則上說,他想到應當盡可能得降低文檔開發(fā)和發(fā)布的復雜度,建立自由、開放和互聯(lián)互通的分布式系統(tǒng)。網(wǎng)站部署方式應該簡單、高效,且用戶無需自行下載,僅僅通過 HTTP 代理軟件 —— 瀏覽器,即可快速獲得想要的資源。在這種設想下,Tim Berners-Lee 在自己的 NeXT 電腦(Steve Jobs 創(chuàng)立)上架設了世界上第一個 Web 服務器和 Web 瀏覽器,域名為?http://info.cern.ch/,延續(xù)至今。
創(chuàng)新互聯(lián)公司主營延津網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶APP開發(fā),延津h5微信小程序搭建,延津網(wǎng)站營銷推廣歡迎延津等地區(qū)企業(yè)咨詢zzpic19728.jpg
<figcaption >程序員小李</figcaption>
隨后,如大多數(shù)人所預見,瀏覽器被卷入了無休止的商業(yè)戰(zhàn)爭中,第一次瀏覽器大戰(zhàn)、第二次瀏覽器大戰(zhàn)、第三次瀏覽器大戰(zhàn)……。在利益的趨勢下,各種陰險狡詐的手段層出不窮:操作系統(tǒng)捆版瀏覽器、瀏覽器捆綁搜索引擎、瀏覽器捆綁門戶網(wǎng)站、***病毒修改主頁、流氓安全軟件修改主頁、國產(chǎn)“自主研發(fā)”瀏覽器騙補貼……。同時,競爭也催生了越來越多的程序員品種,前端工程師、網(wǎng)絡工程師、PHP 工程師、優(yōu)化工程師……;競爭加速了產(chǎn)品的改進與更替,事物優(yōu)勝劣汰,Mosaic、Netscape、IE 瀏覽器相繼死去,安全、美觀、高性能的瀏覽器脫穎而出;競爭加速了技術的迭代與進步,無數(shù)的排版引擎、腳本解釋引擎應運而生,KHTML、Webkit、Trident、Gecko、Blink、Presto……,Chakra、Carakan、JavaScriptCore、SpiderMonkey、V8……。不得不說,沒有戰(zhàn)爭,沒有競爭,就沒有現(xiàn)在前端圈的繁榮與繁華。
<figcaption >瀏覽器們放學約架</figcaption>
然而,事情并非這么順利,競爭與迭代帶來了很多兼容性遺留問題。新型瀏覽器為了表示它們完全支持舊瀏覽器提供的特性,在 UA 標志上動手腳,偽裝成目標瀏覽器,并增加自己的獨特標志。瀏覽器廠商為了提升市場份額,以差異化為準則不斷改進產(chǎn)品,提升競爭力,卻沒有一套統(tǒng)一的標準來約束基礎技術架構。為此,以 Tim Berners-Lee 為首的人在 1994 年創(chuàng)建了非營利組織 W3C,作為中立機構,致力于 Web 標準化的制定,指導瀏覽器正確地工作,推動技術穩(wěn)定有序地發(fā)展。但是,歷史總是在曲折中前進,其中有一段時間 W3C 甚至劍走偏鋒,意圖放棄 HTML 轉而推廣 XHTML,受到廠商和用戶的一致反對。因此,由 Opera、Mozilla 基金會、蘋果這些瀏覽器廠商成成了 WHATWG 工作組,繼續(xù)編寫和擴展 HTML 標準。直至今天,W3C 和 WHATWG 兩個機構同時在運作。WHATWG 制定的標準稱為 Living Standard,W3C 制定的標準成為 Recommendation;WHATWG 只負責跟進最新的標準,W3C 會對歷史版本標準進行歸檔;WHATWG 制定的標準更加激進,W3C 只提供成熟、穩(wěn)定且大部分已經(jīng)被瀏覽器實現(xiàn)的標準;WHATWG 社區(qū)更加活躍,W3C 會復制粘貼他們的成果。另外,即使有標準的制定和約束,但并非強制性要求,瀏覽器廠商可以根據(jù)自己的情況選擇性支持其中之一。
<figcaption >W3C/WHATWG 拳打腳踢</figcaption>
唯物辯證法指出,一切存在的事物都由既相互對立、又相互統(tǒng)一的一對矛盾組合而成:標準制定者與瀏覽器開發(fā)者、瀏覽器開發(fā)者與 Web 開發(fā)者、Web 開發(fā)者與 Web 用戶群體。標準制定者抱怨瀏覽器開發(fā)者不按照他們所制定的標準來實現(xiàn),后者抱怨前者太過偏激、草率;Web 開發(fā)者抱怨瀏覽器開發(fā)者解析執(zhí)行代碼效率過低,后者抱怨前者調用姿勢錯誤;Web 用戶群體抱怨 Web 開發(fā)者寫的界面太丑、交互不合理、BUG 太多,后者抱怨前者用戶行為詭異、不按常理出牌。雖然說矛盾推動了技術的發(fā)展,但同時也帶來了更大的危機和沖突。瀏覽器各種功能和特性的差異化給 Web 開發(fā)者帶來了極大的困擾與痛苦,不得不采取各種 hack 手段、兼容手段,讓代碼在任一瀏覽器內無差錯執(zhí)行。開源社區(qū)也涌現(xiàn)了大量的解決方案,致力于抹平瀏覽器之間的差異。core-js 基于 ES3 的語法提供 ES5、ES2015+ 的特性 Polyfill;Autoprefixer 基于 caniuse-db 來決定是否添加瀏覽器私有樣式前綴;Babel 基于 compat-table 來編譯高階語法到低階語法;Browserslist 基于 BrowserStack 來統(tǒng)計市場份額以及提供瀏覽器產(chǎn)品列表。即使如此,仍存在一些不可抗力因素,使得 Web 開發(fā)者沒有辦法彌合或徹底消除這些差異。比如,Service Worker、Web Worker、WebAssembly、Web Bluetooth、Proxy、Grid Layout、<dialog> Element、CSS Houdini 等這些特性,我們沒有辦法通過上訴方式解決。
<figcaption >世界末日?</figcaption>
痛點并不是完全無法解決。我們的訴求是需要一種手段來解決產(chǎn)品差異化帶來的問題,一種手段是兼容低版本瀏覽器;另一種手段是只適配高版本瀏覽器,并且告知用戶應該升級他們的瀏覽器,才能正常使用我們的服務。無論使用哪種手段,我們都應該要去避免這種情況:頁面加載后一片空白或者點擊某個按鈕完全沒有響應,頁面布局錯位、頁面腳本執(zhí)行錯誤,然而用戶并不知道我們的網(wǎng)站不兼容他們的瀏覽器。為了解決這個問題,我們可以想到有很多方案,一種簡單的方案是使用條件注釋,比如 <!–[if lt IE 9]>...<![endif]–>;一種方案是基于特性的檢測,檢查全局對象 window 是否存在某個對應屬性;另一種更好的方案是使用 UA 判斷,在頁面運行期間檢測當前代理是否滿足開發(fā)者的要求,遺憾的事實是社區(qū)中并沒有一個很好的通用方案來實現(xiàn)這個目標。因此,我們按照后者的設想,致力于提供一個工具,并集成于現(xiàn)有的前端工具鏈中,來達到目標。
<figcaption >“這次可能真的成了!”</figcaption>
Obsolete Webpack Plugin 是筆者在業(yè)余時間開發(fā)的工具,檢測用戶瀏覽器是否支持網(wǎng)站代碼。方法很簡單,當頁面處于 Idle 狀態(tài)時,檢測 UA 是否滿足開發(fā)者預設的目標瀏覽器。如果配對失敗,則執(zhí)行腳本,把預設的模板插入 DOM 樹中,來提醒用戶他們的瀏覽器不支持,應該升級或者下載一款新的瀏覽器,避免一片空白茫然不知所措的局面。工具上手難度、配置復雜性很低,我們基于社區(qū)中最普遍、廣泛依賴的基礎庫 Browserslist 來作為輸入預設,無縫整合到當前的前端工具鏈中,所以最后決定選擇 Webpack 插件作為切入點,打包時額外生成一份兼容 ES3 語法的腳本,結合 HTML Webpack Plugin 一起注入到 HTML 中。
歷史的車輪滾滾向前,最后,祝所有的 Web 開發(fā)者有一個愉快的開發(fā)體驗,讓技術牽動用戶使用更好的瀏覽器,而不是讓用戶阻礙了技術的進步。
9eff325416be933216924134f29095d.jpg
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享題目:什么是ObsoleteWebpackPlugin?-創(chuàng)新互聯(lián)
本文URL:http://muchs.cn/article30/phppo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、關鍵詞優(yōu)化、動態(tài)網(wǎng)站、品牌網(wǎng)站設計、企業(yè)建站、云服務器
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容