Mozilla 平臺小記

   由於之前的項目決定在Linux上運行Mozilla平臺,最後基於Mozilla開發基本應用。所以瞭解了一些Mozilla平臺的開發。
   雖然日後估計不會再用到了,當個人覺得還是很強大的一個平臺,之前也看到過一個基於這個平臺的企業應用,很不錯。依賴Mozilla實現跨平臺,並且可以用Linux+Mozilla實現個瘦客戶端。
小記如下:
firefox 定製
	一種是通過userChrome.css進行定製,可修改見面樣式,還可以通過樣式使某部分不顯示
	perf.js 是軟件的默認配置,可以修改一些配置選項

	另一種直接修改firefox源碼,firefox完全通過xul和js編寫的,所以修改firefox目錄下的chrome/browser.jar文件

firefox 擴展

	firefox擴展的一般目錄結構
	ext/
		chrome/
			content/
				main.xul	#按照chrome.manifest中的設定,存放相應的界面xul,js腳本之類的資源
		chrome.manifest		#chrome方式資源定位的描述文件,定義瞭如何通過chrome資源定位訪問到指定文件
		install.rdf			#描述擴展,如作者,廠商,版本,擴展的類型(有主題,程序),要求的firefox版本

	當開發完成之後,就可以將ext整個目錄用zip打包,修改擴展名爲xpi,就可以讓firefox安裝使用了。


	main.xul
		是用來描述界面的xul,使用xml語言,其中也可以嵌入js腳本

	*.js
		主要的程序邏輯功能還是放入js文件當中,然後在main.xul中進行引用

	chrome.manifest
		可描述多種類型如:content, overlay, locale
		content: 資源文件
		overlay: 覆蓋原有某部分內容,如覆蓋firefox瀏覽器的狀態欄,添加擴展所需的內容。
		locale: 國際化資源的定位

國際化
	採用xml的方式進行國際化。
	首先需要在chrome.manifest當中,指定locale資源位置,然後通過*.dtd和.properties文件讀取本地化的文本

	在xul中引用的國際化文本,使用dtd文件
	在程序中,如js腳本中引用國際化文本,使用properties文件

mozilla 平臺開發
	firefox和thunderbird等應用程序,全是基於mozilla平臺進行開發的。mozilla平臺主要使用xul,xpcom,npruntime等方式進行開發。

	xpcom和npruntime都是對mozilla平臺的進行擴展,通過這兩種方式可以使用c/c++訪問系統資源,向mozilla程序提供接口。
	xpcom組件趨向於被npruntime取代。

	還可以使用Mozilla embedding APIs將mozilla組件內嵌入其他應用程序當中。

mozilla 應用程序
	一般目錄結構如下:
	app/
		chrome/
			content/
				main.xul
			locale/				#國際化資源存放位置
				en-US/
			chrome.manifest		#同樣是chrome資源定義
		defaults/
			preferences/
				prefs.js		#應用程序默認配置,修改xulrunner的默認配置
		extensions/
		application.ini			#應用程序配置描述,作者,mozilla要求版本等


	應用程序與firefox擴展目錄結構基本相同,因爲firefox就是基於mozilla平臺開發,擴展機制也同樣是利用mozilla平臺提供的。

	應用程序使用xulrunner運行: xulrunner application.ini

xpcom 組件:
	通過開發xpcom組件,給於應用程序訪問系統資源的方法,以及其他用來擴展xulrunner應用程序的功能。
	
	*.idl 描述接口,所有接口都繼承自nsISupports,描述中還需要uuid,用來唯一標識這個接口,使用uuidgen程序生成。

	xpidl 程序可以通過idl文件生成,c++頭文件和實現文件,還有xpt文件

	*.xpt 是接口的二進制描述文件。提供xulrunner訪問接口的速度。
	
	*Module.* 是用來實現Module的接口,以讓xulrunner調用該組件
		通過NS_IMPL_NSGETMODULE和nsModuleComponentInfo結構,告知xulrunner,組件對象的註冊。

	組件安裝
		最終將生成*.so和xpt文件放入xulrunner/components目錄下,如果存在components.list文件,則需要添加文件。
		組件是否註冊會在應用程序的用戶配置目錄下生成compreg.dat文件
		!!當出現註冊不上時,可嘗試刪除compreg.dat文件!!


使用xpcom組件:
	 var c = Components.classes["@ccoss.com/desktop;1"].createInstance(); //獲得組件實例
     c = c.QueryInterface(Components.interfaces.nsICcoss); //要使用的接口,因此一個組件可以實現多個接口
	



	
	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章