https://blog.csdn.net/ZYS10000/article/details/107246076/
https://blog.csdn.net/wswq2505655377/article/details/125148655
vue源码注释版:https://github.com/qq281113270/vue
function initUse (Vue) {
// 1. Vue.use是一个函数
Vue.use = function (plugin) {
// 2. 定义一个数组 如果 this._installedPlugin 不存在,会执行 this._installedPlugins = []
var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
// 3. 判断是否已经注册了,已经注册了直接 return
if (installedPlugins.indexOf(plugin) > -1) {
return this
}
// 4.获取其他参数 例如:Vue.use(plugin,a,b,c) 中的 a b c
var args = toArray(arguments, 1);
// 5.参数第一项,加一个Vue实例进去
args.unshift(this);
// 6. plugin 有 install 这个方法
if (typeof plugin.install === 'function') {
// 7. 执行一下 instal,再把参数传递进去(可以看插件的 install 方法,接受第一个参数,就是 Vue 实例)
plugin.install.apply(plugin, args);
} else if (typeof plugin === 'function') {
// 8. 如果 plugin 本身就是函数 直接执行
plugin.apply(null, args);
}
// 9. 来一个数组存储已经注册的插件
installedPlugins.push(plugin);
return this
};
}
网友评论