09 支持插件
xwjie opened this issue · 0 comments
xwjie commented
实现
比较简单,增加一个全局变更,增加一个static方法use
。
主要是函数 apply用法
// 全局插件
const globalPlugins: Array<Function | Object> = []
class Xiao{
// 其他代码
/**
* 插件安装指令
*/
// D:\OutPut\VUE\vue\src\core\global-api\use.js
static use(plugin: Function | Object) {
if (globalPlugins.indexOf(plugin) > -1) {
return
}
//fixme additional parameters
const args = toArray(arguments, 1)
args.unshift(Xiao) //放到第一个位置
if (typeof plugin.install === 'function') {
plugin.install.apply(Xiao, args)
} else if (typeof plugin === 'function') {
plugin.apply(Xiao, args)
}
globalPlugins.push(plugin)
}
}
插件可以直接传入一个函数,或者一个包含 install 函数的对象。