Vue.use()

2023-02-05  本文已影响0人  Cherry丶小丸子

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
    };
}
上一篇 下一篇

猜你喜欢

热点阅读