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
}

从源码上看, use的实现还是比较简单。

  1. 如果当前的插件被注册过了,那么从缓存中直接拿出来使用
  2. 如果是个对象。那么需要有install 这个属性,并且要求是个函数
  3. 可以是函数类型
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐