首页 教程 API文档

创建插件模块

2015-09-11 15:33:14

属性


前置知识 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配置可以直接为需要继承的插件模块的字符串名称.

如果你不完全了解Std.plugin模块是如何运作的,我们建议你使用plugin模型中的plugin方法来载入插件,不建议直接使用new或者Std.plugin或Std.plugin.create方式在创建插件.

main方法实际参数


类型 描述
Object this对象
Object 参数选项,如果创建模块时候没有指定option配置,那么这个值为null
Object owner,插件的持有者

语法



Object Std.plugin.module(String pluginName,Object config);
        

参数


名称 类型 描述
pluginName String 插件的名称
config Object 插件的配置,详细配置可以插件Std.module文档

返回值


创建之后的plugin模块对象.

相关例子


创建一个DOM模块与ui模块通用的插件模块


//该插件的作用是每隔指定时间抖动一次
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",{});