首页 > 其他分享 >[Vue] 如何定义全局的方法?

[Vue] 如何定义全局的方法?

时间:2024-09-13 18:02:14浏览次数:1  
标签:Vue 定义 app myPlugin vue import 全局 App

app.use 插件

// myPlugin.js
export default {
  install(app) {
    app.config.globalProperties.$myPlugin = () => {
      console.log('This is a method from a plugin!')
    }
  }
}

// main.js
import { createApp } from 'vue'
import App from './App.vue'
import MyPlugin from './myPlugin'

const app = createApp(App)
app.use(MyPlugin)
app.mount('#app')
<h1>{{ $myPlugin('greetings.hello') }}</h1>

app.config.globalProperties

可以直接在 main.js 写全局属性和函数,但是这种方式不推荐,不利于维护和团队开发。推荐通过 app.use

TS 全局属性和函数的类型

某些插件会通过 app.config.globalProperties 为所有组件都安装全局可用的属性。举例来说,我们可能为了请求数据而安装了 $http,或者为了国际化而安装了 $translate。为了使 TypeScript 更好地支持这个行为,Vue 暴露了一个被设计为可以通过 TypeScript 模块扩展来扩展的 ComponentCustomProperties 接口:

import axios from 'axios' // 如果不是第三方扩展,也建议写一个 export {} 在顶层避免出问题,具体查看官方文档,下方链接。

declare module 'vue' {
  interface ComponentCustomProperties {
    $http: typeof axios
    $translate: (key: string) => string
  }
}

Vue3 文档 - 扩展全局属性 和 类型扩展的位置

app.provide

// main.js
import { createApp } from 'vue'
import App from './App.vue'

const app = createApp(App)

app.provide('globalMethod', () => {
  console.log('This is a provided global method!')
})

app.mount('#app')
<template>
  <div>
    <button @click="globalMethod">Call Injected Method</button>
  </div>
</template>

<script setup>
import { inject } from 'vue'

const globalMethod = inject('globalMethod')
</script>

标签:Vue,定义,app,myPlugin,vue,import,全局,App
From: https://www.cnblogs.com/Himmelbleu/p/18412663

相关文章

  • 基于django+vue大学生学科竞赛管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的不断发展,学科竞赛已成为培养大学生创新精神、实践能力和团队协作精神的重要途径。然而,传统的手工管理方式在处理日益增长的......
  • 基于django+vue大学生学科竞赛管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的快速发展与教育理念的持续创新,学科竞赛已成为培养大学生创新能力、实践能力和团队协作精神的重要途径。近年来,各类学科竞赛......
  • 基于django+vue大学生心理咨询服务网站【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今快节奏、高压力的社会环境中,大学生群体作为社会未来的栋梁,其心理健康问题日益凸显。学业压力、人际关系、职业规划等多重因素交织,使......
  • 2025最新:如何打造Java SpringBoot Vue房屋租赁管理系统?掌握房源管理,实现房东无忧!
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、微信小程序、大数据实战项目集⚡⚡文末......
  • vue2 + scss 全局引入 变量使用
    百度以及时AI帮助说的配置方式都大差不差,但是我的总是报错,意思就是变量找不到,报错如下Foraguideandrecipesonhowtoconfigure/customizethisproject,<br> 然后AI和文章写的vue.config.js的配置内容基本如下module.exports={css:{loaderOp......
  • Vue中简单的组件,登录和注册切换
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>&l......
  • ros 自定义消息(图像+标志位+位姿)python和c++发布和接受
      编译 脚本 v3_gaosi_img_pose_flag.sh#!/bin/bash#外部给与执行权限#sudochmod+xrun_ros_nodes.sh#定义ROS安装路径#安装时候添加到系统路径了不需要每次都sourceROS_SETUP="/opt/ros/noetic/setup.bash"#定义工作目录路径自己的工程没有加到系......
  • A178-基于java+springboot+vue开发的租房网站(源码+数据库+LW+部署文档)
    功能介绍平台采用B/S结构,后端采用主流的Springboot框架进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。前台功能包括:首页、房屋详情页、门票订单、用户中心模块。后台功能包括:总览、订单管理、房屋管理、分类管理、设施管理、评论管理、用户管理、......
  • [Vue] Object.defineProperty 什么情况监听不到?和 Proxy 响应式原理又何区别?
    前言Vue2.x采用的是Object.defineProperty来实现响应式系统,它只能监听已经存在的属性,无法监听对象属性的新增或删除。Vue3使用Proxy拦截对对象和数组的访问和修改,实现了响应式系统。它通过拦截这些操作,追踪哪些数据被访问、修改,从而在数据变化时通知相关的依赖。Object......
  • vue3 el-message组件封装
    背景在封装请求拦截器时,使用ElMessage进行弹窗提示成功或失败,但是如果页面用到多个接口,这时就会导致页面出现很多弹窗,导致用户体验不好,有可能出现卡顿现象。这时就需要进行一些判断,如果前面的ElMessage还没关闭并且类型是一致的就return,不再弹窗提示,类型不一致时就要弹窗提示......