至今为止,我们已经将源代码管理移至SVN(Subversion)。另一方面,我们正在对代码的目录结构进行调整。现在,WebCore模块拥有一个khtml目录和一个ksvg2目录。虽然,在KDE项目中,这两个目录的内容属于两个不同的模块,但是,在Webkit里,我们已经将这两个模块整合在一起(为了支持复合文档(Compound Document),以及更快的速度),接下来,我们想更进一步地将这两个目录整合到一个目录里。
另一方面,我们正在尝试将移植层也进行相应的调整。现在,移植层里包含两套数据结构:一套与Qt API相近的基础数据结构,以及一套与Qt完全无关的数据结构。我们计划将这些对象整合到一个新的目录里,并调整它们,使它们不再与Qt冲突。这将使得将WebCore移植回Qt变为可能,因为,我们将不再包含造成无法兼容的元素:在API层面上的命名相同,但功能完全不同的类。
新的目录结构,如下所示:
bindings - 语言相关(JavaScript或者Object-C)的绑定的相关内容。该目录包含两个子目录:js目录和objc目录。该部分来自于以前的khtml/ecma目录,ksvg/ecma目录以及ksvg/bindings目录。最终,这些语言相关的绑定将由接口定义语言(IDL)文件自动生成。
bridge - WebKit框架桥接的相关内容。
page - 顶层页面(page)和框架(frame)的相关内容。该部分来自于以前的khtml部分和khtml视图(khtml view)部分。我们将使这个部分更加抽象,从而使之不但能够桥接至WebKit,而且可以桥接至另一种抽象(例如,khtml部分)。
platform - 平台实现的相关内容。该部分来自于以前的khtml/misc目录以及kwq目录。每一个具体的平台实现拥有对应一个子目录,例如,mac目录。其他的移植拥有自己的子目录(例如,Qt,GTK,Win32等)。
css - CSS样式表的相关内容。该部分来自于以前的khtml/css目录和ksvg2/css目录。
editing - 编辑(editing)的相关内容。该部分来自于以前的khtml/editing目录。
html - HTML文档对象模式(HTML DOM)的相关内容。该部分来自于以前的khtml/html目录。
loader - 子资源加载的相关内容。该部分来自于以前的khtml/misc目录。
svg - SVG文档对象模式(SVG DOM)的相关内容。该部分来自于以前的ksvg2/svg目录。
xsl - XSLT样式表的相关内容。该部分来自于以前的khtml/xsl。
xml - XML文档对象模式(XML DOM)(HTML+SVG文档对象模型的基类)的相关内容。该部分来自于以前的khtml/xml目录。
我们将保持文件名与文件里定义的类名一一对应。如果一个文件里包含多个类,我们会将该文件拆分,从而一个文件只定义一个类。
欢迎大家的意见和反馈。当我们完成这些调整后,我们将拥有一个优雅和清晰的KHTML和KSVG2的整合,以及一个更好的独立于任何一个具体平台实现的平台抽象。
原文地址:http://www.webkit.org/blog/42/webcore-directory-structure/