-
Notifications
You must be signed in to change notification settings - Fork 45
这个页面描述的是正在开发中的 v0.9 版本实现的特征。
插件用于向 RootPanel 拓展功能,插件系统是 RootPanel 的重要功能之一。
/plugin
下的每一个目录即为一个插件,插件需要在 config.coffee
中被开启才会被加载:
plugin:
available_plugins: ['linux', 'bitcoin', 'shadowsocks']
-
index.coffee: 入口点文件,会在 RootPanel 启动时被加载
-
locale: 本地化翻译数据
其中每个文件表示一种语言支持,需以
zh_CN.json
的形式命名。 -
static: 静态资源
该目录会被挂载到
/plugin/<name>/
. -
test: 单元测试
直接位于该目录下的 .test.coffee 文件会参与单元测试。
-
view: 页面模板
该目录下的 .jade 文件可以直接被 plugin.render 调用。
-
template: 文件模板
该目录下的文件可以直接被 plugin.renderTemplate 调用。
插件的入口点文件 index.coffee
必须拓展 Plugin
并导出下列格式的插件信息:
linuxPlugin = module.exports = new Plugin
name: 'ssh'
dependencies: []
register_hooks:
'account.username_filter':
filter: linux.isUsernameAvailable
initialize: ->
-
name
插件的唯一标识。
-
dependencies
该插件依赖的其他插件,如果依赖条件不满足,会在启动时产生一个错误。
-
register_hooks
描述要注册的钩子。
-
initialize
初始化函数,会在启动时被执行。
-
started
类似于
initialize
, 但在完成所有启动步骤后执行。
在运行时,每个插件都表现为 Plugin 的一个实例,Plugin 提供的功能:
-
config
配置文件中
plugins.<plugin_name>
的部分。 -
registerHook(name, payload)
注册钩子,等价于在
register_hooks
中定义钩子。 -
registerComponent(info)
注册 元件。
-
getTranslator(languages)
获得翻译器,此翻译器可以直接使用
locale
文件夹下的数据,自动添加plugins.<plugin_name>
前缀。 -
render(name, req, view_data, callback(html))
渲染
view
目录下的 Jade 模板。 -
renderTemplate(name, view_data, callback(body))
渲染
template
目录下的模板。 -
triggerUsages(account, trigger_name, volume, callback)
记录用量计费信息。
插件通过注册钩子的方式拓展 RootPanel, 钩子的列表位于 /core/pluggable.coffee
, 详细的说明见 钩子。
钩子用于插件与 RootPanel 交互,事件则用于 RootPanel 单向地通知插件某一事件的发生。
可以通过这样的方式监听事件:
app.on 'app.started', ->
monitor.run()
目前支持的事件:
-
app.started
在 RootPanel 完成所有启动步骤后发生。
RootPanel 的全部文档和 WIKI 使用 CC-SA 授权,其中的代码示例不保留版权。