认识
2024年03月18日
一、认识
app.use()
安装一个插件。app.use()
本质就是执行需要注入插件的install
方法, 并能阻止多次注册相同插件。该方法第一个参数必须是 Object
或 Function
类型的参数。如果是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
}