前置知识 | Std.module, Std.events |
复杂程度 | 中高 |
使用频率 | 中 |
所属模块 | Std.plugin |
成员类型 | 静态成员函数 |
Std.plugin.module方法用于创建一个插件模块,其配置方法与Std.module方法完全一致,不同之处在于主函数.
当插件模块的主函数只有2个形式参数,第一个是owner对象,owner对象表示了哪一个模块实例需要载入这个插件,第二个形参是插件的参数选项.
如果在创建插件模块时候没有定义option配置,那么这个插件是没有参数选项的,当然,除非这个插件是继承的某个有参数选项的插件模块除外.
插件模块的主函数有3个实际参数,第一个是这个插件实例对象的this对象,第二个是参数选项(如果没有参数选项,就为null),第三个实参是owner对象.
同时,插件实例对象中拥有2个成员变量 owner 与 pluginName
插件默认还混合了events模型中的这几个函数 on off once emit __emit__
插件拥有一个默认的方法 remove ,该方法是一个空函数,什么也不会做.
当插件实例对象被创建的时候,create事件会被触发.
如果插件实例中参数选项中包含on键,那么插件实例对象会自动使用on方法给插件实例添加事件.
在创建插件模块的时候,必须将第一个参数设置作为插件名称.
在创建插件模块时候,其中的parent配置可以直接为需要继承的插件模块的字符串名称.
类型 | 描述 |
Object | this对象 |
Object | 参数选项,如果创建模块时候没有指定option配置,那么这个值为null |
Object | owner,插件的持有者 |
Object Std.plugin.module(String pluginName,Object config);
名称 | 类型 | 描述 |
pluginName | String | 插件的名称 |
config | Object | 插件的配置,详细配置可以插件Std.module文档 |
//该插件的作用是每隔指定时间抖动一次
Std.plugin.module("shake",{
option:{
interval:5000
},
public:{
//移除插件时候要执行的操作
remove:function(){
clearInterval(this._timer);
}
},
main:function(that,opts,owner){
this._timer = setInterval(function(){
Std.dom(owner).animate({
30:{
"left[-]":"8px"
},
70:{
"left[+]":"16px"
}
},{
duration:150,
iterationCount:5
});
},opts.interval);
}
});
//创建一个widget渲染到body,装入这个插件
Std.ui("widget",{
renderTo:"body",
width:200,
height:200,
css:{
background:"red",
position:"fixed"
},
plugins:{
shake:{}
}
});
//获取body中的class为header的元素,将其装入shake插件
Std.dom("body .header").plugin("shake",{});