-
Notifications
You must be signed in to change notification settings - Fork 45
这个页面描述的是正在开发中的 v0.9 版本实现的特征。
元件(Component
)定义了一项面向用户的服务的模板,用户可以依据元件来创建「元件的实例」来享受服务。
在不引起歧义的情况下,下文可能会用「元件」来代指「元件的实例」。
- 元件由 插件 定义,一个插件可以定义若干种元件
- 元件的实例可以被用户创建和销毁
- 元件的实例可以在物理 节点 间转移、可以在用户之间转移所有权、可以由用户授权给其他用户
- 创建和使用元件的实例的权限由 付费计划 授予用户,当失去权限后,元件的实例会被销毁
元件由插件通过 Plugin.registerComponent
注册:
linuxPlugin.registerComponent
name: 'linux'
initialize: linux.createUser
destroy: linux.deleteUser
packing: ->
unpacking: ->
register_hooks:
'account.resources_limit_changed':
timing: 'every_node'
action: linux.setResourceLimit
'view.panel.styles':
timing: 'available'
path: '/plugin/linux/style/panel.css'
每一项元件都有一个形如 plugin_name.component_name
的名字,如果 component_name
和 plugin_name
相同,则可以缩写为 plugin_name
.
initialize
和 destroy
定义了元件的实例被创建时所需要执行的操作:
initialize: (component, callback) ->
callback err
destroy: (component, callback) ->
callback err
它们均接受两个参数,分别是元件信息,和一个回调函数,回调函数的第一个参数用于错误处理。
用于在物理节点间转移,尚未实现。
register_hooks
用于注册「元件钩子」,与插件钩子不同,元件钩子提供了一个 timing
选项,该选项描述了钩子会在什么情况下被执行。
当 timing
为不同的值时,传递给 action
的参数也不同,下面列出了 timing
可能的值和 action 的测试:
-
always
总是执行一次,等价于插件钩子action: (callback) ->
-
available
在用户可以创建此元件时执行一次action: (account, callback) ->
-
once
用户拥有此元件时执行一次action: (account, components, callback) ->
-
every
用户每拥有一个此元件时执行一次action: (account, component, callback) ->
-
every_node
用户每在一个节点拥有此元件时执行一次action: (account, node, components, callback) ->
RootPanel 的全部文档和 WIKI 使用 CC-SA 授权,其中的代码示例不保留版权。