Firefox引入了一套新的擴展技術(shù),名為WebExtensions。通過這種新的擴展技術(shù),瀏覽器可以擁有一個更現(xiàn)代的界面,兼容性、性能和安全性也更強。
瀏覽器Firefox是不斷變化的,但新功能并不總是受歡迎的。當Mozilla宣布新一代的擴展API時,即刻引發(fā)了一股憤怒的浪潮。Firefox用戶擔心他們最喜歡的擴展程序可能從此消失,擴展程序開發(fā)商擔心他們多年付出的努力從此付之東流。那么,這究竟是怎么一回事呢?
被取而代之的是過時的而又繁瑣的跨平臺組件對象模型(Cross Platform Component Object Model,簡稱XPCOM)、XML綁定語言(XML Binding Language,簡稱XBL)和XML用戶界面語言(XML User Interface Language,簡稱XUL),按目前的情況來看,F(xiàn)irefox的擴展程序未來將使用WebExtensions技術(shù)實現(xiàn)。這個新的接口(https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API)是一項兼容GoogleChrome Blink API的技術(shù)。
這一新的擴展技術(shù)有兩個優(yōu)點、一個缺點:首先,WebExtensions是一個歷經(jīng)15年的成熟的擴展技術(shù),使用它遠比Firefox自己另外開發(fā)更方便。其次,GoogleChrome和Opera的擴展程序都基于類似的技術(shù),因而,開發(fā)人員可以更容易地讓自己的擴展程序適用于更多的瀏覽器。但隨之而來的問題是:舊的擴展技術(shù)將不被支持,舊的擴展程序不重新編程就無法繼續(xù)用于Firefox。
新的WebExtensions技術(shù)背后的想法很簡單:開發(fā)擴展程序應(yīng)該是很容易的,應(yīng)該像開發(fā)網(wǎng)站一樣,開發(fā)人員只需編寫一次代碼,擴展程序即可在各種瀏覽器上應(yīng)用,不需要做太多的修改,擴展程序即可工作在Firefox及Chrome、Opera、Safari等瀏覽器上,甚至包括微軟最新的瀏覽器Edge,只要未來Windows 10的瀏覽器支持擴展程序,那么這自然也不在話下。
因此,在這個新的擴展技術(shù)下,將可以看到大量JavaScript、HTML和CSS等Web開發(fā)的元素,因為新的WebExtensions擴展程序基本上就是一個簡單的網(wǎng)站。不過,我們并不會看到這些,因為它們只在后臺工作,或者只是顯示為按鈕、彈出窗口或側(cè)邊欄。而Firefox目前使用的擴展名為XPI的文件(跨平臺安裝程序)的壓縮格式,也正在考慮切換到熱門的ZIP格式。該XPI文件實際上只是一個壓縮容器,它以一種節(jié)省空間的方式捆綁了擴展程序的實際組件以及相關(guān)的管理模塊,其中的清單文件(manifest.json)是唯一絕對必要的組成部分。此文件包含WebExtension其余部件的元數(shù)據(jù)和鏈接,可以通過本文的圖示了解WebExtensions擴展程序的結(jié)構(gòu)。
WebExtensions的核心部分是其中的腳本,通過它新的擴展程序可以與被調(diào)用的網(wǎng)站和服務(wù)器進行交互。同樣重要的是,WebExtensions將可以訪問瀏覽器的組件,例如標簽頁、書簽或歷史。在XPI文件的其他模塊確定擴展程序在Firefox的可見元素,例如按鈕或側(cè)邊欄,并且可以訪問網(wǎng)絡(luò)資源,可以簡單地從網(wǎng)上下載圖片或其他數(shù)據(jù)。結(jié)合幾個巧妙的附加功能,開發(fā)人員可以很輕松地開發(fā)擴展程序。
目前,WebExtensions在alpha階段,在已完成的版本中,F(xiàn)irefox將可能比其他瀏覽器支持更多的功能。此外,將有一個Meta API,如果需要,它可以與實驗性功能一起使用。
每一個擴展程序作為一個單獨的進程
Mozilla重建其擴展技術(shù)實際上是有原因的,首先Firefox本身正在重建,名為Electrolysis的新項目將是一個多進程的Firefox,將分兩個階段推出。第一階段:瀏覽器本身在單獨的進程(用戶接口進程)運行時,與內(nèi)容(內(nèi)容處理)分離。第二階段:每個標簽頁打開將在其自己的進程中運行。這將為其帶來優(yōu)勢,有效提高瀏覽器的安全性和穩(wěn)定性。WebExtensions已經(jīng)確定將在Electrolysis中使用,但是傳統(tǒng)的插件程序?qū)⒉猾@支持,所以如果Firefox未來沒有新的改變,那么現(xiàn)有的擴展程序應(yīng)該盡快進行修改。
使用新的WebExtensions擴展程序可以更好地處理好瀏覽器的安全問題,由于Firefox的擴展程序幾乎可以訪問一切,甚至是訪問網(wǎng)站和瀏覽器的設(shè)置。為此,許多激進工具欄利用此漏洞,導(dǎo)致Firefox出現(xiàn)許多并不需要的擴展程序,甚至是惡意程序。因此,最近Mozilla要求擴展必須經(jīng)過驗證和添加數(shù)字簽名,否則將不能夠用于Firefox 45之上。而通過WebExtensions技術(shù),Mozilla將可以更好地控制擴展程序。