2006年12月10日星期日

Mozilla/XUL平台在哪些方面吸引我

前几天说,我想学习一下XUL了。为什么呢?

我赖以混饭吃的项目组的项目的业务层越来越复杂,用户们也不满于我们接纳和实现功能需求的速度,期望能够自己搞二次开发。为此我们在前一个版本中 全面加强了脚本扩展,以便能够方便外围业务的开发。但这只是解决了逻辑方面的问题,但缺少界面扩展能力,那怕只是提供几个选项的简单的对话框。

通过Firefox的使用,我看到了Mozilla作为一个开发平台的能力,而ThunderBird, Komodo等也说明了Mozilla不仅仅是个浏览器。所以我想学习一下XUL,如果明年能够推动迁移到这个上面来就比较有意思了,即使这个目标达不到我也期望能够从中学到很多思想。

那么,Mozilla/XUL具体在哪些方面吸引我?

  • 脚本与系统完全融为一体,可以响应界面,可以创建XPCOM对象(有点遗憾的是,Python脚本支持的进展有点慢);
  • 界面的快速开发功能(XUL),界面元素也相当丰富(对于我们的应用,目前还欠缺一个datagrid, 或者说可编辑的treelist),我对于还要考虑对话框怎么调整大小、分隔条的行为这些问题感到厌烦;
  • 可通过XPCOM扩展系统;
  • overlay机制,可以通过扩展修改核心系统的行为(也包括界面,比如在一个已有窗口中插入一些元素);
  • 本身支持HTML的显示,这会给内容的展现带来很大的方便;
  • 包,各个包之前是相互独立的,各有自己的名称空间,而overlay机制又允许包之间可以打交道;
  • 完整而简单的多语言解决方案。多语言这个问题初看起来简单,但自己实现起来就觉得需要考虑好多东西,比如字符集问题,语言包的更新问题(程序修改过之后,如何识别哪些语句需要更新),界面的翻译问题等等;
  • 跨平台

不过目前也觉得有些不太好的地方:

  • 体系有点太复杂了,掌握XML, XUL, JavaScript和CSS似乎是最基本的,还有XPCOM, XBL, RDF, DOM...,还有一些工具的用法,初学者太难于上手了;
  • 界面缺少工具WYSWYG工具,别说Delphi那样的完整的RAD系统了,连glade, wxglade那样的工具都没有见到;
  • 中文资料比较少,也就在limodou的学习笔记上看见过一些XUL Tutorial的翻译和学习心得;
  • 似乎内存占用有点大(其实我倒觉得挺正常,但我们的用户太挑剔了 :-()

没有评论: