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.
发布了235 篇原创文章 · 获赞 39 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/mzlogin/article/details/7309857
今日推荐