tnblog
首页
视频
资源
登录
什么时候才能领悟,取之越多失之越多
排名
5
文章
229
粉丝
15
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

vue3 如何加prototype。vue3使用globalProperties

5314人阅读 2023/7/6 9:51 总访问:1165777 评论:0 收藏:0 手机
分类: 前端

在2.X版本中创建一个vue 实例是通过 new Vue()来实现的,到了3.X中则是通过使用createApp这个 API返回一个应用实例,并且可以通过链条的方式继续调用其他的方法。

在vue2.x中,我们想设置全局变量,可以在main文件中用prototype绑定vue实列,在vue3.0中,可以用app.config.globalProperties来代替prototype,具体用法如下。

  1. // main.js
  2. import { createApp } from 'vue'
  3. import App from './App.vue'
  4. import router from './router'
  5. import store from './store'
  6. import axios from 'axios'
  7. const app = createApp(App)
  8. app.use(store)
  9. app.use(router)
  10. app.config.globalProperties.$axios = axios // 自定义添加
  11. const vm = app.mount('#app')

这样就可以使用了

  1. ...
  2. <script>
  3. export default {
  4. name: 'App',
  5. methods: {...},
  6. mounted() {
  7. console.log(this.$axios)
  8. }
  9. }
  10. </script>

绑定一个字符串

在 vue2 中绑定

  1. Vue.prototype.$dzm = 'dj-test'

在 vue3 中绑定

  1. // 初始化相关
  2. import { createApp } from 'vue'
  3. import { nextTick } from "@vue/runtime-core"
  4. import App from './App.vue'
  5. import router from './router'
  6. import store from './store'
  7. // 创建对象
  8. const app = createApp(App)
  9. // 必须使用 nextTick,不然会有加载顺序问题,导致绑定失败
  10. nextTick(() => {
  11. // 代替 Vue.prototype.$xxx 绑定
  12. app.config.globalProperties.$dzm = 'dj-test'
  13. })
  14. // 使用并挂载
  15. app.use(store).use(router).mount('#app')
  16. // 导出
  17. export default app

js中使用

  1. <script>
  2. import { getCurrentInstance } from 'vue'
  3. export default {
  4. setup () {
  5. const { proxy } = getCurrentInstance()
  6. console.log(proxy.$dzm)
  7. }
  8. }
  9. </script>

模版中使用

  1. <span>{{ $dzm }}</span>

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价