1 | 插件:编写插件
|
2 | ==============================
|
3 |
|
4 | 3 步即可编写一个 vConsole 插件:
|
5 |
|
6 | - 实例化 vConsole 插件
|
7 | - 绑定事件到插件
|
8 | - 将插件添加到 vConsole
|
9 |
|
10 |
|
11 | ## 1. 实例化插件
|
12 |
|
13 | 插件原型挂载在 `VConsole.VConsolePlugin` 中:
|
14 |
|
15 | ```javascript
|
16 | VConsole.VConsolePlugin(id, name)
|
17 | ```
|
18 |
|
19 | - `id` (必填) 字符串,插件的 id,必须保证唯一,不能与其他插件冲突。
|
20 | - `name` (选填) 字符串,展示为 tab 面板的名字。
|
21 |
|
22 | 所以这一步只需将插件 `new` 出来即可:
|
23 |
|
24 | ```javascript
|
25 | var myPlugin = new VConsole.VConsolePlugin('my_plugin', 'My Plugin');
|
26 | ```
|
27 |
|
28 |
|
29 |
|
30 | ## 2. 绑定插件事件
|
31 |
|
32 | 在初始化插件、后续运行时,vConsole 会对插件触发一些事件(event)。插件须通过这些事件来完成自定义功能。
|
33 |
|
34 | 使用 `.on()` 方法来绑定一个事件:
|
35 |
|
36 | ```javascript
|
37 | on(eventName, callback)
|
38 | ```
|
39 |
|
40 | - `eventName` (必填) 字符串,事件的名字。
|
41 | - `callback` (必填) 回调函数,事件被触发时执行。
|
42 |
|
43 |
|
44 |
|
45 | 例子:
|
46 |
|
47 | ```javascript
|
48 | myPlugin.on('init', function() {
|
49 | console.log('My plugin init');
|
50 | });
|
51 | ```
|
52 |
|
53 | 关于每个事件的具体功效,请查阅[Event 事件列表](./plugin_event_list_CN.md)。
|
54 |
|
55 |
|
56 |
|
57 | 在本教程中,我们准备编写一个既有 tab 面板,又有 tool 按钮(位于面板底部)的插件。
|
58 |
|
59 | 添加新 tab 面板,需要绑定 `renderTab` 事件:
|
60 |
|
61 | ```javascript
|
62 | myPlugin.on('renderTab', function(callback) {
|
63 | var html = '<div>Click the tool button below!</div>';
|
64 | callback(html);
|
65 | });
|
66 | ```
|
67 |
|
68 | 插件初始化过程中,就会触发 `renderTab` 事件。在这里我们简单地回传了一个 HTML 字符串给 `callback`,然后这段 HTML 就会被选染成新 tab 面板的主体部分。这个新 tab 的名字就是刚才实例化时的 `name`。
|
69 |
|
70 | 此外,若不绑定 `renderTab`,那么 vConsole 就不会添加新 tab。
|
71 |
|
72 |
|
73 |
|
74 | 接下来要添加一个底部的 tool 按钮,需要绑定 `addTool` 事件:
|
75 |
|
76 | ```javascript
|
77 | myPlugin.on('addTool', function(callback) {
|
78 | var button = {
|
79 | name: 'Reload',
|
80 | onClick: function(event) {
|
81 | location.reload();
|
82 | }
|
83 | };
|
84 | callback([button]);
|
85 | });
|
86 | ```
|
87 |
|
88 | 同样地,`addTool` 会在插件初始化过程中触发,且在 `renderTab` 之后。回调函数 `callback` 的参数接收一个 `array` 数组,数组元素是用于配置按钮的 `object` 对象。本例中,点击这个按钮会重新加载当前网页。
|
89 |
|
90 |
|
91 |
|
92 | ## 3. 添加到 vConsole
|
93 |
|
94 | 最后一步,就是将写好的插件添加到 vConsole 中:
|
95 |
|
96 | ```javascript
|
97 | vConsole.addPlugin(pluginObject)
|
98 | ```
|
99 |
|
100 | `pluginObject` (必填) 必须为 `VConsolePlugin` 实例化的对象。
|
101 |
|
102 | 例子:
|
103 |
|
104 | ```javascript
|
105 | vConsole.addPlugin(myPlugin);
|
106 | ```
|
107 |
|
108 | 在添加到 vConsole 之前,请确保已经绑定完所有需要用到的事件。一些初始化相关的事件只会在插件被添加时触发一次,并不会在其他时机被触发。
|
109 |
|
110 |
|
111 | [返回索引](./a_doc_index_CN.md) |
\ | No newline at end of file |