使用Add-on SDK开发我的Firefox扩展有哪些优点/缺点?

Ple*_*and 23 firefox firefox-addon firefox-addon-sdk

我正在为Firefox开发(另一个)密码管理器插件.我的附加组件需要:

  • 向每个密码字段添加两个上下文菜单项.
  • 选择菜单项时,打开对话框或浮动面板.
  • 访问特定XPCOM组件的特定方法.
  • 填写密码字段.
  • 包括首选项窗口.
  • 与Firefox 4.0兼容.

优选地,还:

  • 在Firefox 3.5和3.6上运行.
    • 某些用户不会更新到最新版本.
    • Firefox 4.0无法在PowerPC Mac上运行.
  • 在Firefox 4.0上无需重新启动即可安装.
  • 允许本地化.

我尝试过Add-on SDK(以前称为Jetpack),它使开始开发变得非常容易.但是,我发现HTML无法轻松创建"本机外观"对话框,并且SDK相当重量级.(构建一个简单的扩展需要几千字节;其中包括一个XPCOM组件!)

使用Add-on SDK开发我的Firefox扩展有哪些优缺点?它是否已准备好进行"严肃"的扩展开发?

小智 22

好处:

  1. Jetpack API 为您提到的大部分内容公开了高级API:

    • 添加两个上下文菜单项
    • 浮动面板
    • 密码管理器的API
  2. 基于Jetpack的附加组件无需重启.

  3. 基于Jetpack的附加组件是未来的证据,因为高级API将在未来版本的FF中保持不变.

  4. 您可以将一些社区开发的模块用于SDK未公开的API.

  5. 如果这不是您计划构建的最后一个扩展,那么可以通过构建第4方中提到的第三方模块来实现代码重用(有关详细信息,请参阅文档)

  6. 支持移动FF将在1.0版本的Addon-SDK中推出,这可能意味着您的扩展可以与移动版本的FF兼容,只需极少的努力.

  7. Jetpack带有内置单元测试框架.

  8. 拥有更好的安全模型,这将简化附加审核流程.

  9. Jetpack支持commonjs模块/包,这意味着某些代码可以从其他项目中借用,例如nodejs.

缺点:

  1. Jetpack不再支持FF <4.
  2. 尚不支持本地化.
  3. 没有用于构建首选项面板的API,但可以作为第三方模块开发并与社区的其他人共享.
  4. 加载项将包含带有抽象层的代码,这将增加加载项的大小(正在进行的工作将通过排除加载项未使用的文件来减少xpi大小).