Vue3中Vue.prototype.$project = base.getProjectName()的语法如何使用?

  在 Vue 3 中,Vue.prototype 已被移除,不能再直接向 Vue 的原型上添加全局属性或方法。取而代之的方式是使用 app.config.globalProperties 进行全局属性的挂载。

替代方式

  如果你想在 Vue 3 中实现类似 Vue.prototype.$project = base.getProjectName() 的功能,可以这样做:

import { createApp } from 'vue';
import App from './App.vue';
import base from './base'; // 假设 base 里有 getProjectName 方法

const app = createApp(App);

// Vue 2 写法:Vue.prototype.$project = base.getProjectName()
// Vue 3 写法:
app.config.globalProperties.$project = base.getProjectName();

app.mount('#app');

在组件中使用

  在 Vue 组件中,你可以通过 this.$project 访问该全局属性:

<script setup>
import { getCurrentInstance } from 'vue';

const instance = getCurrentInstance();
console.log(instance.appContext.config.globalProperties.$project);
</script>

  或者在 Options API 里直接使用:

<script>
export default {
  mounted() {
    console.log(this.$project); // 访问全局属性
  }
}
</script>

更推荐的做法

  虽然 app.config.globalProperties 提供了类似 Vue.prototype 的功能,但在 Vue 3 中,官方更推荐使用 依赖注入(Provide/Inject) 或 Pinia(Vuex 替代方案) 来管理全局状态,尤其是复杂的项目。

  如果是简单的全局配置,可以使用 provide/inject:

// main.js
app.provide('projectName', base.getProjectName());

  然后在组件中使用:

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

const projectName = inject('projectName');
console.log(projectName);
</script>

  这样会更加符合 Vue 3 的最佳实践。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nihui123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值