跳到主要内容

认识

2024年03月18日
柏拉文
越努力,越幸运

一、认识


app.use() 安装一个插件。app.use()本质就是执行需要注入插件的install方法, 并能阻止多次注册相同插件。该方法第一个参数必须是 ObjectFunction 类型的参数。如果是Object那么该Object需要定义一个install方法;如果是Function那么这个函数就被当做install方法。Vue.use()执行就是执行install方法,其他传参会作为install方法的参数执行。

二、实现


packages/runtime-core/src/apiCreateApp.ts
use(plugin: Plugin, ...options: any[]) {
if (installedPlugins.has(plugin)) {
__DEV__ && warn(`Plugin has already been applied to target app.`)
} else if (plugin && isFunction(plugin.install)) {
installedPlugins.add(plugin)
plugin.install(app, ...options)
} else if (isFunction(plugin)) {
installedPlugins.add(plugin)
plugin(app, ...options)
} else if (__DEV__) {
warn(
`A plugin must either be a function or an object with an "install" ` +
`function.`
)
}
return app
}