plugin功能包括如下幾個模組, 簡單分析如下:
pluginhost-base
維護物件 this._plugins = {};
並提供方法: plug、unplug、hasplug、_destroyplugins、_initplugins
plug: 初始化外掛程式例項,並與host進行關聯
if (plugin && !l.isfunction(plugin))// plugin should be fn by now
if (plugin && plugin.ns) ;
config.host = this;
if (this.hasplugin(ns))
} else
}
_initplugins: 呼叫模組 pluginhost-config 中的_initconfigplugins(config);
pluginhost.prototype.\_initconfigplugins = function(config) ,constructor, i, classplug, classunplug, pluginclassname;
for (i = classes.length - 1; i >= 0; i--)
classplug = constructor._plug;
if (classplug)
}for (pluginclassname in plug) }}
// user configuration
if (config && config.plugins)
};
pluginhost-config
base-pluginhost
mixin base and pluginhost, 即:y.mix(base, pluginhost, false, null, 1);
base.plug = pluginhost.plug;
base.unplug = pluginhost.unplug;
plugin
繼承y.base . 提供aop的一系列方法, 如:
dobefore: function(strmethod, fn, context) else if (host.on)return handle;
},doafter: function() ,
onhostevent: function() ,
afterhostevent: function() ,
beforehostmethod: function() ,
afterhostmethod: function()
1、 任何簡單物件即可成為乙個簡單外掛程式, 如:
function nodedrag(config)function drag(host)
2、yui的plugin基類提供了基於事件的aop機制支援,可以通過繼承它在不影響原有**邏輯前提下,通過對**執行過程的控制,達到改變原有**邏輯或者增加外掛程式功能的效果, 如:
function nodedrag()y.extend(nodedrag, y.plugin.base,
});
給乙個node節點新增乙個外掛程式
1、使用base的靜態方法, 實際呼叫的是pluginhost-config裡面的plug方法
y.base.plug(y.one('#foo'), nodedrag, config);
2、node物件和繼承了y.base物件的例項都可以通過例項直接呼叫plug方法使用外掛程式
y.one('#foo').plug(nodedrag, config);
3、具體widget
function widget() {}y.extend(widget, y.base,
});var w = new widget();
//var w = new widget();
//var w = new widget( });
cfg);
在一些情況,為了讓呼叫者不必過多的關心實現細節的時候,也將外掛程式的初始化放到具體widget的實現中, 如:
widget.attrs =};y.extend(widget, y.base,
}});
通過host進行統一的入口管理
YUI3學習感想 之API頁面分析說明
modules 所有的模型 classes 選中模型所包含的所有類資訊 files 該模型的js檔案 properties 選中class的屬性資訊 methods 選中class的方法 events 選中class的事件資訊 configuration attributes 選中class的配置引...
(54)元件之移動元件
movement components提供了朝著 actor 或角色 所作的一種形式的移動,移動元件是該 actor 或角色 的子物件。charactermovementcomponent允許形象不使用物理剛體移動 走 跑 跳 飛 跌落和游泳 該元件專用於characters,任何其他類無法執行它。...
(57)元件之物理元件
這些物理元件用於影響那些在您的場景中以不同方式應用物理效果的任意物件。destructiblecomponent用於存放 destructible actor 的物理資料。在新增該元件作為子物件時,您必須指定要使用的destructible mesh資源。如果願意,您也可以覆蓋並指定fracture...