在當下的互聯(lián)網(wǎng)時代,誰都在爭先恐后的推出自己的瀏覽器,從遠古時代的Netscape與IE之爭,到現(xiàn)在的Firefox,IE,Opera,Chrome,Safari大戰(zhàn),硝煙彌漫。為什么一個目前看來僅僅是用來上網(wǎng)瀏覽網(wǎng)頁的程序會引得無數(shù)商家拼得你死我活?
就我看來未來的互聯(lián)網(wǎng)將是一個瀏覽器的時代,瀏覽器即是操作系統(tǒng),目前的瀏覽器除了基本的瀏覽網(wǎng)頁的功能外,都在向其它方向延伸,比如集成郵件客戶端,或者提供接口,讓別人可以基于自己的瀏覽器開發(fā)出各種各樣的應用,比如Firefox的“附加組件",Opera的Widget與Unite等等,這些插件可以基于這些瀏覽器開發(fā),但可以獨立于瀏覽器運行,在Firefox的插件庫里(https://addons.mozilla.org/zh-CN/firefox),各種插件有上萬種之多。這些插件大到是一個獨立的應用程序,下到只是一些快捷方式。
一直以來,網(wǎng)頁程序與桌面程序都被看成是兩個分開的內(nèi)容,互沒關(guān)系,網(wǎng)頁程序運行于瀏覽器上,桌面程序獨立運行,開發(fā)也是獨立的,桌面程序有各種各樣自己的開發(fā)環(huán)境,似乎不可能把網(wǎng)頁脫離瀏覽器拿到桌面上來以桌面應用的方式獨立應用。
但這已經(jīng)不是不可能的事情了
如果我告訴你Firefox、Thunderbird 這樣Mozilla的桌面應用程序都是使用HTML,Javsscript,CSS這些網(wǎng)頁開發(fā)技術(shù)開發(fā)出來的,你信嗎?
但確實是這樣。這些桌面程序的菜單欄、工具欄、各種界面、對話框這些都是通過HTML、CSS定義出來的,各種事件都是通過Javascript寫的。
這使用了Mozilla的技術(shù):XUL(XML User-interface Language XML用戶交互語言)。
XUL柔和了HTML,CSS,提供了一套自己的界面定義語言,比如定義菜單等桌面應用常見的控件,但HTML,CSS仍然可以直接使用,然后通過Javascript來寫事件處理。通過它你就可以像開發(fā)網(wǎng)頁一樣開發(fā)桌面應用,在Firefox的插件庫中許多都是通過它開發(fā)出來的。XUL其實就是瀏覽器把HTML,CSS,Javascript渲染成網(wǎng)頁換成了渲染成桌面程序,通過Firefox提供的API,Javascript還能訪問桌面的內(nèi)容,比如操作本地文件等等,同時XUL應用也是基于web的,所以它也有網(wǎng)址,可以把.xul文件發(fā)給別人,別人通過firefox就能訪問它,而效果不再是網(wǎng)頁了,而是桌面效果了,當然這其中有安全設(shè)置
可以進到Firefox的安裝目錄的chrome下面,解壓任意的jar文件,可以看到里面有很多的js,css,xml文件。用Firefox訪問其中的xul文件,就能看到通過瀏覽器訪問的效果,比如下圖是Firfox的錯誤控制臺瀏覽器中訪問效果

除了Firefox外,Opera也有這種功能,Opera的widget與unite也是通過HTML、CSS,Javascript來開發(fā)的,并且他們也可以作為基于瀏覽器運行的桌面應用,比如從Opera的插件庫(http://www.opera.com/addons/)中下載一個養(yǎng)魚的娛樂應用widget:

看它的目錄中也是有許多的css,html,js。
其實想想,這是多么好的創(chuàng)意,大多數(shù)的瀏覽器都只是把HTML,CSS,Javascript這些技術(shù)在瀏覽器中進行渲染執(zhí)行,如果把瀏覽器作為一個底層的運行平臺,稍加點擴展,不就可以讓這些傳統(tǒng)的網(wǎng)頁技術(shù)作為獨立的桌面應用程序運行了嗎,再提供點能夠訪問操作系統(tǒng)的API,Javascript就可以像其它桌面開發(fā)語言一樣訪問桌面環(huán)境的內(nèi)容了,但到底這些內(nèi)容仍然是來之于網(wǎng)絡(luò)的,可以有一個URL地址,換種角度看,可以在任何地方通過URL訪問把一個桌面運用拿到本地來。
所以,以后的互聯(lián)網(wǎng)將是瀏覽器的天下