第二章 开发平台的准备
“工欲君欲善其事,必先利其器”。Firefox 就是我们的开发环境,因为所做的开发都是基于 Firefox 的。那么首先,我们要配置好所在的开发环境。合理而有效地配置好整体的开发环境和指定的项目环境,可以令你的开发快速而高效。本章节将讲解如何配置整体的开发环境,后面的章节还将对指定项目的环境配置给予讲解。
2.1 安装开发工具
首先,我们需要下载一个开发平台。虽然 Mozilla Suit 在很长一段时间内还将被使用,但它将不再是扩展开发的重点对象,因此作者希望你的开发环境是 Firefox。那么首先,你需要在自己的机器上下载并安装 Firefox 浏览器。对于开发人员来说,我们有必要在第一时间了解到 Firefox 的更新状态,下面的链接地址可以让你快速地定位新版本的下载位置。
http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
由于作者在写这篇文档时,Firefox 正存在着高版本和低版本的区别,这是由于它分别采用了主分支和子分支的内核造成的。在这种情况下,你可能需要下载两个不同版本的 Firefox 进行开发。但是,如果你对扩展的开发还不熟悉的话,作者不建议你这么做,我希望你下载一个公认的比较稳定的版本,并且下文提到的那些扩展在上面工作得很好。
当你下载完成并进行安装时,你需要选择“自定义(Custom)”安装模式。因为在这种模式下,我们可以选择并安装“开发工具(Developer Tools)”,这一点对于开发人员尤其重要。接下来,我们要下载并安装辅助开发的“工具性扩展”。下面,先对这些工具性扩展进行简单的介绍。
JavaScript Debugger:又被称为 Venkman,它是 Mozilla 平台下的脚本调试工具。Firefox 下的网页及扩展开发,都要求使用 JavaScrit 的调试工具。其实不仅仅是开发扩展,对于步入某一未知开发领域的开发人员,掌握并使用语言调试工具都可以起到快速入门,有效开发的功效,这一点是无庸置疑的。
Console Filter:JavaScript 控制台(JavaScript Console)的信息辅助过滤工具。由于我们在开发过程中,难免会出现这样或那样的编写错误,而这些信息都被写入到 JavaScript 控制台中。通过这个工具,我们可以在 JavaScript 控制台中对那些错误信息进行有效的过滤和定位,这样就可以加快解决错误的速度。
Component Viewer:XPCOM 组件查看器。通过此工具,你可以了解到 Mozilla 系统下已经安装的所有 XPCOM 组件信息,适合高级别的开发。
Extension Developer:辅助开发扩展的扩展,用来帮助你建立扩展开发项目。它提供了一套工具用来满足 Mozilla 的扩展开发要求,虽然实际上它并不是很好使。在此,作者只建议你使用其中的部分功能,如:“Reload all Chrome”。因为此工具的“Extension Builder”功能还有一些问题,并且不利于你了解扩展的注册机制。
以上提到的这些扩展,你可以在下面的两上网站下载和获取到帮助信息:
安装完成之后,你需要熟悉一下这些扩展的使用方法。这些扩展中,最难掌握的可能就是 JavaScript Debugger 了。你可能需要很长的时间来摸索它的使用技巧,并且随着你对它的熟悉,你会发现不太好使的 Venkman,功能其实是很强大的。而 Console Filter 工具则被集成到 JavaScript 控制台里,并且它还提供了一些简单的过滤命令,你可以在它的发布页面里看到详细的使用方法。对于 Extension Developer 工具,作者经常使用它的“Reload all Chrome”功能。此功能可以让 Firefox 重新装载所有的功能代码,以此使 Firefox 重置为启动状态,这包括所有的扩展代码和组件代码;这样我们就不必在修改代码错误之后,重新启动 Firefox 了,因为只有在重新启动时,那些被修改过的代码才会生效。
2.2 创建 Profile 及配置环境变量
Firefox 是一个允许创建多个 Profile 的浏览器,不同的 Profile 被分别进行管理。其实,不同的 Profile 被对应到不同的配置目录,由配置目录的子目录和文件来维护这个 Profile 的设置。对于不同操作系统和 Mozilla 平台来说,这个目录是有所区别下的,下面列出 Firefox 的 Profile 目录在不同操作系统下的位置,其它类型的 Mozilla 平台,类推即可。
| 操作系统 | Proile 对应的目录 |
|---|---|
| Windows 9x/Me | C:\Windows\Application Data\Mozilla\Firefox\Profiles\<Profile name>\ |
| Windows 9x/Me, alternate | C:\Windows\Profiles\<Windows login/user name>\Application Data\Mozilla\Firefox\Profiles\<Profile name>\ |
| Windows NT 4.x | C:\Winnt\Profiles\<Windows login/user name>\Application Data\Mozilla\Firefox\Profiles\<Profile name>\ |
| Windows 2000/XP | C:\Documents and Settings\<Windows login/user name>\Application Data\Mozilla\Firefox\Profiles\<Profile name>\ 或 |
| Unix | ~/.mozilla/firefox/<Profile name>/ |
| Mac OS X | ~/Library/Mozilla/Firefox/Profiles/<Profile name>/ 或 |
(注:文档的其它部分将使用 %profile% 来代表以上的 Profile 目录,使用 %app% 来代表 Mozilla 程序的安装目录。)
由于在开发扩展时,我们希望一个 Profile 用来做开发,一个 Profile 用来测试扩展的发布版本。所以,我们要配置不同的 Profile 来满足这种要求。
一般把默认的 Profile 做为开发的 Profile,所以,我们不用做什么特殊的设置。你可以把上面提到的那些扩展,全部安装到此 Profile 下。之后,关于开发的所有内容都将对此展开。
那么,我们还要创建一个新的 Profile 来完成扩展的安装,或者说是发布测试工作。通过下面的两个步骤,你可以实现这种需求。
首先,我们需要在命令行方式下,定位到 Firefox 的安装目录,通过运行
firefox -P
我们可以启动 Firefox 的 Profile 管理器窗口,利用此窗口,你可以建立一个负责测试安装的 Profile。当然,如果你还有别的要求,你也可以建立更多的 Profile。
然后,假设你通过上面的步骤建立了一个名为“test”的 Profile,如果你想启用这个 Profile,你需要通过
set MOZ_NO_REMOTE=1
firefox -P test
这两行命令来启用这个非默认启动状态的 Profile。很显然,这两条命令可以写成一个 Shell 脚本或做成一个批处理文件。那么,在你下次再启用这个 Profile 的时候就会轻松许多。
对于负责开发的 Profile,我们还要更改其中的某些设置项,以使其更利于扩展的开发。下面列出了几个需要更改的设置项,并且给出了解释。
- javascript.options.showInConsole = true :将 chrome 类型的错误提示信息显示在 JavaScript 控制台中,这样可以方便扩展的调试;
- nglayout.debug.disable_xul_cache = true :令 chrome 下的 XUL 修改不会被 cache,以便不重新启动 Mozilla 也可以查看到页面布局的更改;
- browser.dom.window.dump.enabled = true :将 window.dump() 方法打开,这样 dump 信息就被打印在标准控制台上。此时,你还需要通过“-console”参数来启动 Firefox。只有这样,所有的 dump 信息才会被输出到标准控制台上;
- javascript.options.strict = true :允许严格的 Javascript 警告出现在 JavaScript 控制台中。对于你自己的扩展,这样的设置可能会显示出更多的错误提示信息。
通过在地址栏中键入 about:config,你可以打开 Mozilla 内置的配置界面,这样你就可以更改那些设置项的值。在更改完这些设置项之后,我们会在以后的开发中更加得心应手。