Moziila文件結構概覽

/**
 * 文件名:Moziila文件結構概覽
 * 來  源:https://developer.mozilla.org/en/Source_code_directories_overview
 * 翻  譯:mzlogin#qq.com
 * 日  期:2012年2月22日
 *
 */
源碼目錄概覽


這個文檔是一份爲開發人員提供的Mozilla源碼目錄結構樹的指南。它提供源碼的鳥瞰以方便開發人員理解Mozilla裏有什麼,到哪裏去找想要的東西。它對一個剛剛學習Mozilla源碼的開發人員來講是一份不錯的文檔。


這份文檔包含SeaMonkey,Firefox和Toolkit的相關材料。


這是一份根據Mozilla的源碼樹按月更新的文檔。


在Mozilla Source Code Directory Structure和more detailed overview of how the parts of Gecko fit together可以看到相似的內容。


簡介:公有子目錄


一套通用名稱方案貫穿整個Mozilla源碼樹。最頂層的是產品名稱(如seamonkey)。在第二層是模塊的名稱(如seamonkey的editor目錄)。第三層一般就由通用命名方案接管了。許多第三層目錄包含base,public,和idl目錄。雖然不是必須的,但這些同名的目錄一般是用作相同的用途。如果將文件按子模塊分組,它們通常會被放進第三層目錄並且命一個唯一的名字(如seamonkey的editor目錄中的txmgr)。在第三層目錄下面,可能會有第四層的base,public和idl目錄。因此,這個方案是遞歸的;它適用於子模塊,子模塊的子模塊,依此類推。


base 包含模塊的基本(核心)功能。base包含所有不能被分類成子模塊的源碼。
build 包含所有用作組建特定模塊的makefile。
doc 包含與模塊相關聯的所有文檔。
idl 包含XPIDL(跨平臺接口定義語言)接口文件。這些接口能極容易地廣泛應用於JS腳本和C代碼。XPIDL文件擁有它們自己的迷你語言和處理工具。
public 包含將被導出到dist/include目錄的源碼。它們並非全部都需要公開,有一些只是在特定模塊作特定用途。越多的代碼被寫成或者轉換成XPIDL接口,public目錄的價值就越小。
src 包含大部分源碼。
tests 包含運用此模塊的C,HTML或XUL示例代碼。
tools 包含自動生成某些源碼的腳本和組建這個模塊的專用工具。


有幾個目錄是平臺相關的,包含特定平臺的源碼。

windows 包含Windows 95,Windows 98和Windows NT 4.0的專用源碼。
mac 包含MacOS的專用源碼(包括PowerPC和68000版本)。
gtk 包含運行在Unix的X-Windows的GTK(又名GIMP工具包)的專用源碼。
motif 包含運行在Unix的X-Windows的Motif工具包的專用源碼。
os2 包含OS/2專用源碼。
rhapsody 包含使用Yellow Box(Cocoa)的Mac OS X Server(Which is based on NeXTStep which is based on X-Windows on Unix)的專用源碼。
beos 包含BeOS的專用源碼。
qt 包含QT工具包(可以運行在X-Windows On Unix,Windows 95,Windows 98和Windows NT 4.0的C庫)的專用源碼。
photon 包含Photon(一個使用在QNX Software Systems Ltd.的幾個實時操作系統上的微內核窗口系統)的專用源碼。


SeaMonkey
SeaMonkey是火狐瀏覽器套件的開發版名稱。


accessible 包含爲Linux提供對Microsoft Active Accessibility和Sun's ATK accessibility API的支持的源碼。
browser 包含Firefox的一些源碼。這將會包含如下。
build 包含Mozilla build team用於組建和管理Mozilla基礎代碼的腳本(通常是Perl)和程序。這些程序協調makefiles的運行以及dist目錄的創建。
calendar 包含各種各樣的Mozilla日曆程序和擴展。
caps 包含決定基於加密和證書(如Verisign)的內容的性能的C接口和代碼。
chrome 包含chrome registry工具包。
config 包含Mozilla開發人員用於操縱基礎代碼和執行makefiles裏的特定行爲的腳本和程序。這些程序是代碼層的而不是組建層的(那些在build目錄裏)。
content 是從layout中分裂出來的,包含那些與DOM相關的對象。
db 包含用於mdb/Mork database(一種低級,通用且跨平臺的文件庫)的C代碼。它用於存儲郵箱數據,新聞數據和全局歷史數據。它現在還不能支持XPCOM。這些代碼起源於Mozilla傳統基礎代碼。
dbm 包含用於管理,讀寫哈希表的C代碼。它用於URL編輯框(存儲在傳統Mozilla的netscape.hst中)的自動補全特性和緩存頁面索引(存儲在傳統Mozilla的fat.db中)。這部分代碼起源於加州大學伯克利分校。
directory 包含LDAP(輕量級目錄訪問協議)SDK。
docshell 包含載入並展示單個網頁(例如scroll)的C接口和代碼。[#seamonkey-embedding embedding]代碼包裝這些代碼實現更高層次瀏覽器功能如向前,後退和歷史。
dom 包含實現和跟蹤Javascript裏的DOM(文檔對象模型)對象的C接口和代碼。它們組成C根據Javascript腳本創建,銷燬和操縱內建及用戶定義的對象的子體系結構。例如,如果Javascript腳本添加一個自定義的屬性給文檔(如document.goofy = 1),代碼將創建"goofy"結點,將它放到"document"結點並根據最近的Javascript命令來操縱它。
editor 包含實現可以編輯純文本和HTML的可嵌入編輯器組件的C接口,C代碼和XUL。它被用於HTML編輯器(如在傳統Mozilla中的編排器),純文本及HTML組成的郵件,以及貫穿整個產品的文本字段和文本區域。這個編輯器被設計得像“帶編輯特性的瀏覽器窗口”並且額外附帶編輯文本和管理undo/redo。
embedding 包含實現泛型高級瀏覽器功能(如向前,後退,歷史)的C接口和代碼。[#seamonkey-webshell webshell]代碼依據特定平臺與支持的方式(如ActiveX)包裝這些接口。
extensions 包含與瀏覽有關的各種插件的C接口,C代碼,XUL和Javascript代碼。包括:cookies,IRC,wallet,DOM Inspector,P3P, schema validation,spellchecker,transformiix,typeaheadfind,Javascript debugger,XForms等等。
gfx 包含平臺相關的繪圖與成像的C接口與代碼。可以用於畫rectangles,lines,images等等。本質上來講,它是一個平臺相關的設備上下文集。它不操作小部件或者特定繪製例程;它只是提供繪圖的最原始操作。
intl 包含本地化支持的C接口和代碼。包含支持各種字符集,各種格式(如不同地方的日期和時間格式)和其它本地化功能的代碼。
ipc 包含??(空白)
jpeg 包含讀寫JPEG圖像的C代碼。這些代碼起源於對the Independent JPEG Group的JPEG規範的引用實現。
js 包含將Javascript腳本語彙單元化,解析,解釋和執行的C代碼。這些代碼起源於Mozilla Classic。
l10n 包含本地化組建的代碼。
layout 包含實現佈局引擎的C接口和代碼。佈局引擎決定如何劃分窗口資源給一塊塊的內容。它依據CSS1和CSS2(級聯樣式表),對齊風格和內容調整和對齊一塊塊的內容。它並不實際渲染內容;它只是將窗口的不同塊分配給各種內容元素。它被稱作“軟熔”這些內容。這些代碼也被稱作“NGLayout和“Gecko”。
lib 包含對Mac編程的開發人員參考的C代碼。它不再使用。它展示瞭如何將Mozilla瀏覽器嵌入到Mac應用程序中去,就像一些示例文件——handling code from Apple。
mailnews 包含郵件和消息組件(如Messenger in Mozilla Classic)的C代碼。它包含管理郵件,讀取新聞組消息,導入其它郵件格式,組成新的消息等功能的所有代碼。
modules 包含組建到Mozilla中的各種不同瀏覽器關聯特性的C代碼。它包括處理各種圖像格式(如PNG,GIF),允許插入Java虛擬機(called OJI,for "Open Java Interface"),支持插件並且讀取各種壓縮格式(如JAR,ZIP,ZLIB)的代碼。這些代碼來源於Mozilla和各種公司以及獨立個人。
netwerk 包含低層次訪問網絡(使用sockets和文件以及內存緩存)和高層次訪問(使用各種協議如http,ftp,gopher和castanet)。這部分也被稱作“netlib”和“Necko”。
nsprpub 包含跨平臺C運行時庫的代碼。這個C運行時庫包含基本非可視的C函數,有分配和釋放內存的,獲取時間和日期,讀和寫文件,處理線程的跨平臺的字符串比較。這部分也被稱作“nspr”和“Netscape Portable Runtime”。這些代碼來源於Mozilla Classic。
other-licenses 包含沒有歸於MPL的代碼,包括branding,libical和stubs for 7zip。
parser 包含HTML解析器和XML解析器(expat.)。
plugin 包含Mac上的MRJ plugin的代碼。
profile 包含創建新用戶數據,管理已經存在的用戶數據,從Mozilla Classic遷移數據和爲流行的ISPs(如Earthlink和Concentric Networks)使用默認數據的代碼。
rdf 包含訪問各種數據並且根據RDF組織它們之間的關係的C接口和代碼。RDF是一個開放的標準即“Resource Description Framework”。這些代碼從本地文件系統,數據庫,Internet或者其它使用類URL語法的資源讀寫數據。
security 包含安全模塊包括NSS和PSM。
storage 包含sqLite3的一個實現。
suite 將包含特定於Mozilla suite的文件。
sun-java 包含使Mozilla能與Sun JVM交流的C代碼。但是它並不包括虛擬機本身的代碼。
themes 包含Mozilla的默認主題,modern和classic。
toolkit 包含Firefox,Thunderbird和其它獨立應用程序使用的工具包的代碼。This will be covered below。
tools 包含Linux-only Leaky tool的C代碼。Leaky能幫忙探測內存泄漏和XPCOM引用計數的問題。
uriloader 包含爲某一URL包含的內容調用正確的查看器的C接口和代碼。例如:如果代碼決定內容是一個郵件消息,它會查找匹配的監聽者(可能是Netscape Messaenger)並將郵件消息傳遞給它用於顯示。它是通用的,可以將內容傳遞給內部組件(如Messenger),插件或者輔助程序。
view 包含不同類型視圖(如滾動視圖)的C接口和代碼。一個視圖包括除了標題欄,邊框或者其它裝飾(包含在框架中)以外的內容。這些代碼服務於操縱它包含的個別的內容。例如:一個滾動視圖將查找它的滾動條位置並且告訴它的內容根據滾動條thumbs繪製在什麼哪裏。
webshell 包含C接口,C代碼,Linux Shell腳本和其它文件用於將Mozilla通過不同方式內嵌到各種不同平臺的其它程序中(如plug-in,ActiveX component,XPCOM classes)。
widget 包含C接口和代碼用於平臺依賴的控件(小部件),如scroll bars,radio buttons和list boxes。
xpcom 包含低層次的C接口,C代碼,少量彙編代碼和命令行工具用於實現XPCOM組件(which stands for "Cross Platform Component Object Model")的基本機制。XPCOM是一種允許Mozilla導出接口並且讓它們自動化且有效於Javascript腳本,Microsoft COM和規則的Mozilla C代碼的機制。一些低層次的XPCOM classes和interfaces也在這裏定義(如所有平臺的事件循環)。XPCOM能兼容並且與Microsoft COM很像(雖然XPCOM是跨平臺的)。
xpfe 包含C接口,C代碼和XUL用於實現"Cross Platform Front End"。本質上講,這是Mozilla程序開始和管理其它組件完成任務的地方。這些代碼中包括極少量平臺相關的代碼;它依賴於其它組件來提供平臺相關的接口來提供平臺特定的功能。
xpinstall 包含C接口和代碼用於實現從Mozilla Classic的智能升級特性。XPInstall提供下載文件,解壓,並且安裝它們的代碼,這些與平臺相關。
xulrunner 包含代碼用於XUL Runner。


FireFox
Firefox被包含在browser目錄內。

app 包含用於組建firefox可執行文件的代碼。
base 包含XUL和branding code。
components 包含Firefox指定組件如歷史,書籤,首選項,migration,sidebar..
config 包含Firefox的組建腳本。
extensions 包含用於進行某一擴展工作的代碼。
installer 包含Firefox installer代碼。
locales 包含爲Firefox翻譯的文件。
themes 包含Firefox themes。


Toolkit
Toolkit被用於單獨的產品。

components 包含警告,自動補全,命令行接口,控制檯,cookies,下載管理器,文件選擇器,歷史,密碼管理,前置類型查找,查看源碼,等等。
content 包含爲toolkit指定的XUL。
library 包含libXUL work。
locales 包含翻譯過的文件。
mozapps 包含共享的應用程序材料。
obsolete 包含過時的材料。
profile 包含屬性管理器。
themes 包含與toolkit有關的主題。
xre 是XUL的運行時引擎。這個目錄包含初始化toolkit的代碼。




Original Document Information
•Author(s): Daniel Howard
•Other Contributors: Heikki Toivonen (11-Nov-1999), Hervé Renault (for the French translation) (16-Nov-1999)
•Last Updated Date: Michael Kaply 2-June-2005
•Copyright Information: Portions of this content are © 1998-2007 by individual mozilla.org contributors; content available under a Creative Commons license | Details.
•Further History: Document History.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章