2007年5月18日星期五

Mozilla的可扩展性(开篇?)

本来我是很少买《程序员》杂志的,主要是能力有限,大都看不懂:-(,所以一向只是在书店里站着翻翻,免得买回去占地方。不过第五期上面居然有一篇《Mozilla的架构设计》,Mozilla的中文文章向来比较少,难得有人肯研究这个啊。于是就买了一本,没想到文章看完,发现居然是absurd写的,呵呵,也是,还能有谁。

开始是被firefox的扩展所吸引,加上工作上也需要类似地扩展能力,于是从去年底开始看一些mozilla/xul方面的资料,慢慢地发现了xul, xbl, xpcom的魅力,于是打算系统地学习一下。
  • 春节前后把Creating Applications With Mozilla这本书草草看了一遍,有了大致的了解;
  • 通过limodou的学习笔记将XUL Tutorial看了一遍(英文原文在MDCXUL Planet上都有),好在有他的帖子啊,否则RDF这个东西看英文还真头大;
  • Rapid Application Development with Mozilla 是第二本关于Mozilla开发的书,曾在amazon上获得五颗星的评价(可惜作者过世了,再也没有第二版)。我看了几章,感觉细节讲得比较多,而且很多地方会用类比的方式来讲解为什么要这样设计,不是太适合初学,尤其是英文不太好的朋友很难抓住重点。这本书的PDF版本可以从这里下载到。
absurd是从mozilla的核心代码角度入手来分析的,但我的习惯是从功能应用的角度来入手,可能是跟我的阅读代码的能力比较差有关:-(。而且我目前主要关心的是这个平台怎么就能够方便地扩充功能。我打算近期从一些Firefox扩展入手,来分析一下mozilla/xul的可扩展性。尽量选取一些在扩展性上有代表性的扩展。

先概括地介绍一下mozilla/xul的扩展能力:
  • 通过overlay技术可以对一个已有界面进行重新定义,这也使得对于一个界面可以先写一个框架,再用overlay来逐步细化;
  • 每个窗口的界面元素也有一个DOM结构,完全可以通过脚本来操纵它,修改其属性,甚至动态地创建和删除控件;
  • 可以用XBL来绑定一组XUL元素组成,对行为和风格也可以包装,更方便复用;
  • 可以自己来写xpcom组件(components)来扩展一些功能,尤其是与操作系统或者外部程序交互的地方,这些控件注册后就可以在脚本中使用;甚至可以用javascript来写组件

没有评论: