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

Vue中app.config.globalPropertiesVue.prototype和getCurrentInstance的使用

 app.config.globalProperties和Vue.prototype

在Vue 3中,我们可以使用 app.config.globalProperties 来定义全局的属性和方法。这个属性和Vue 2中的 Vue.prototype 类似,但是在某些方面有所不同。

以下是Vue3中 app.config.globalProperties 和Vue2中的 Vue.prototype 的对比:

1、异步行为不同

Vue 3中是异步创建组件实例并挂载DOM,所以在 app.config.globalProperties 定义的方法中使用异步方法会更加安全。但是在Vue 2中使用 Vue.prototype 来定义方法则会有一些异步行为的问题。

2、组件实例不同

在Vue 3中,组件实例是通过 getCurrentInstance() 来获取的,所以在 app.config.globalProperties 中定义的方法能够访问组件实例。而在Vue 2中,Vue.prototype 定义的方法不能访问组件实例。

3、访问限制不同

在Vue 3中,我们可以通过 app.config.globalProperties 定义一些全局变量和方法,但是这些变量和方法不会被组件模板中的 v-bind 和 v-on 绑定到 this 上。而在Vue 2中,Vue.prototype 定义的变量和方法会被绑定到 this 上。

总体来说,Vue 3中的 app.config.globalProperties 和Vue 2中的 Vue.prototype 都是为了提供全局变量和方法的,但是在某些方面有所不同。Vue 3中的 app.config.globalProperties 更加安全和灵活,能够更好地满足开发者的需求。

案例 -getCurrentInstance注意⚠️

vue2
定义
Vue.prototype.$utils = utils;
Vue.prototype.$bus = new Vue();

使用
this.$utils
this.$bus

vue3
定义
app.config.globalProperties.$utils = utils;
app.config.globalProperties.$axios = getRequest;

使用
import {getCurrentInstance} from "vue";
const { proxy } = getCurrentInstance();
proxy.$utils
proxy.$axios

app.config.globalProperties 可以在 Vue 3 中设置全局变量或函数,使其在整个应用程序中都可以访问。

以下是如何使用 app.config.globalProperties

main.js 中导入并创建 Vue 应用程序:

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

const app = createApp(App)

// 设置全局变量
app.config.globalProperties.$apiUrl = 'https://example.com/api'

// 设置全局函数
app.config.globalProperties.$formatDate = (date) => {
  // 日期格式化逻辑
}

// 挂载应用程序
app.mount('#app')

在组件中使用全局变量和函数:

<template>
  <div>
    <p>API URL: {{ $apiUrl }}</p>
    <p>Formatted date: {{ $formatDate(new Date()) }}</p>
  </div>
</template>

注意:如果使用 TypeScript,还需要在 shims-vue.d.ts 文件中声明全局变量和函数的类型,以便 IDE 可以正确识别它们。


http://www.kler.cn/news/363841.html

相关文章:

  • u盘装win10系统提示“windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式”解决方法
  • 【算法篇】动态规划类(4)——子序列(笔记)
  • Ubutu下的Python如何打包
  • go基础(一)
  • Spring Boot配置文件不识别变量的解决方案
  • vue elementui el-table实现增加行,行内编辑修改
  • 机器视觉相机自动对焦算法
  • spark on kubernetes运行测试
  • Linux之例行性工作
  • 管道与共享内存
  • 【Go语言】语法基础之变量、数据类型详解
  • perl双引号内字符串的反斜线转义
  • 【Linux系统】Linux系统习题整理
  • zsh: command not found: nvm 问题(Mac)
  • 得物iOS函数调用栈及符号化调优实践|得物技术
  • 【前端布局 如何适配不同分辨率 vue2】
  • 12、论文阅读:利用生成对抗网络实现无监督深度图像增强
  • 【Java】多线程-线程创建的两种方式【主线学习笔记】
  • 在vue中key的原理是什么,有什么作用
  • 《Vue.js 组件开发秘籍:从基础到高级》
  • CTFHUB技能树之文件上传——无验证
  • sql-labs靶场第十六关测试报告
  • 一款精美的导航引导页html源码
  • STM32 从0开始系统学习 1
  • 从0开始深度学习(20)——延后初始化和自定义层
  • Text实现美团部分样式