当前位置: 首页 > news >正文

vue3 app.use()的作用

一句话先记住:
app.use(plugin) 就是给 Vue3 “施工队” 统一安装「外挂」或「公共设备」的入口,一旦装完,所有组件都能直接享用,而不需要每个房间(组件)再去单独接电线、通水管。


一、类比理解

  • Vue3 施工队(createApp() 返回的实例)
  • plugin(外挂)可以是一把“电动螺丝刀”、一套“中央空调”、或者一块“共享黑板”。
  • app.use(plugin) 相当于队长说:“大家停一下,先把这套设备装上,以后谁想用直接用。”

二、官方定义

app.use(plugin, options) 会调用插件的 install(app, options) 方法,并保证同一个插件只会被安装一次。


三、最常见的 3 类外挂

  1. 全局功能增强(例:Router、Pinia、i18n)

    import { createRouter } from 'vue-router'
    const router = createRouter(...)
    app.use(router)               // 所有组件都能 this.$router / useRouter()
    
  2. 全局自定义组件/指令(例:Element-Plus、自定义 loading 指令)

    import ElementPlus from 'element-plus'
    app.use(ElementPlus)          // 全局可用 <el-button> 等
    
  3. 工具/调试类(例:devtools、mock、日志)

    import { createPinia } from 'pinia'
    app.use(createPinia())        // 状态管理仓库一次性装好
    

四、自己写一个最小插件

// my-logger.js
export default {install(app, options = {}) {// 1. 添加全局属性app.config.globalProperties.$log = (msg) => {console.log(`[${options.tag || 'APP'}]`, msg)}// 2. 添加全局自定义指令app.directive('focus', {mounted(el) { el.focus() }})// 3. 添加全局组件(可选)// app.component('MyButton', {...})}
}

使用:

import { createApp } from 'vue'
import App from './App.vue'
import MyLogger from './my-logger.js'const app = createApp(App)
app.use(MyLogger, { tag: '别墅' })   // 安装插件并传参
app.mount('#app')

以后在任何组件里都能:

<script setup>
import { getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance()
proxy.$log('Hello from any room!')
</script><template><input v-focus />
</template>

五、一句话总结

app.use(plugin) 是 Vue3 提供的一次性「全局安装接口」:
插件想在全局挂属性、注组件、注册指令、改配置,都写在自己的 install 里;
用户只需一行 app.use(...),整个应用就能共享这些能力。

http://www.dtcms.com/a/332959.html

相关文章:

  • 功能组状态变更能否跨越功能组边界
  • 【递归、搜索与回溯算法】DFS解决FloodFill算法
  • Python subprocess.Popen 打开第三方程序
  • 鸿蒙ArkUI动画实战:TransitionEffect实现元素显隐过渡
  • 启动electron桌面项目控制台输出中文时乱码解决
  • 基于.net、C#、asp.net、vs的保护大自然网站的设计与实现
  • 深度解读 Browser-Use:让 AI 驱动浏览器自动化成为可能
  • 【微服务】.NET8对接ElasticSearch
  • Webapi发布后IIS超时(.net8.0)
  • 后台管理系统-2-vue3之路由配置和Main组件的初步搭建布局
  • 记一次impala的kerberos的配置信息
  • 什么是主网切换
  • DAY41打卡
  • 附045.Kubernetes_v1.33.2高可用部署架构二
  • Web攻防-大模型应用LLM安全提示词注入不安全输出代码注入直接间接数据投毒
  • 稳定且高效:GSPO如何革新大型语言模型的强化学习训练?
  • vue3相关基础
  • kubernetes(序)
  • 从前端框架到GIS开发系列课程(26)在mapbox中实现地球自转效果,并添加点击事件增强地图交互性
  • 超级云 APP 模式:重构移动互联网生态的新引擎
  • 开机自启脚本报错 which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
  • 区块链技术原理(12)-以太坊区块
  • 无人机光电探测模块技术分析
  • 39 C++ STL模板库8-容器1-array
  • 【Java】HashMap的详细介绍
  • uniApp App 端日志本地存储方案:实现可靠的日志记录功能
  • Python 高级语法与用法详解 —— 提升编程效率与代码质量
  • 【LeetCode Solutions】LeetCode 热题 100 题解(36 ~ 40)
  • 高等数学 8.3 平面及其方程
  • 社区物业HCommunity本地部署手册