vue实现定义一个全局实例Vue.prototype

 更新时间:2023年07月03日 09:40:42   作者:web前端 zxp  
这篇文章主要介绍了vue实现定义一个全局实例Vue.prototype,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue定义一个全局实例Vue.prototype

定义与使用

定义:

Vue.prototype.$appName = 'My App'

使用:

this.$appName (任何地方)

使用场景

你可能会在很多组件里用到数据/实用工具,但是不想污染全局作用域

这种情况下,你可以通过在原型上定义它们使其在每个 Vue 的实例中可用

Vue.prototype.$appName = 'My App'

这样 $appName 就在所有的 Vue 实例中可用了,甚至在实例被创建之前就可以。

如果我们运行:

new Vue({
  beforeCreate: function () {
    console.log(this.$appName)
  }
})

则控制台会打印出 My App。就这么简单!

为什么appName要以$开头?这很重要吗?它会怎样?

$ 是在 Vue 所有实例中都可用的 property 的一个简单约定。

这样做会避免和已被定义的数据、方法、计算属性产生冲突。

vue定义全局方法的三种实现

方法一:使用Vue.prototype

//在mian.js中写入函数
Vue.prototype.getToken = function (){
  ...
}
//在所有组件里可调用函数
this.getToken();

方法二:使用exports.install+Vue.prototype

// 写好自己需要的fun.js文件
exports.install = function (Vue, options) {
    Vue.prototype.getToken = function (){
       ...
    };
};
// main.js 引入并使用
import fun from './fun'
Vue.use(fun);
//在所有组件里可调用函数
this.getToken();

在用了exports.install方法时,运行报错exports is not defined

解决方法:

export default {
    install(Vue)  {
        Vue.prototype.getToken = {
           ...
        }
    }
}

方法三:使用全局变量模块文件

Global.vue文件:

<script>
    const token='12345678';
    export default {
        methods: {
            getToken(){
                ....
            }
        }
    }
</script>

在需要的地方引用进全局变量模块文件,然后通过文件里面的变量名字获取全局变量参数值。

<script>
import global from '../../components/Global'//引用模块进来
export default {
    data () {
        return {
            token:global.token
        }
    },
    created: function() {
        global.getToken();
    }
}
</script>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue实现导航吸顶效果的教程详解

    Vue实现导航吸顶效果的教程详解

    在浏览器上下滚动的时候,如何距离顶部的距离大于78px,吸顶显示,小于78px则隐藏,所以本文小编给大家介绍了Vue设置导航吸顶的详细教程,文中有相关的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2024-01-01
  • Vue3源码分析组件挂载创建虚拟节点

    Vue3源码分析组件挂载创建虚拟节点

    这篇文章主要为大家介绍了Vue3源码分析组件挂载创建虚拟节点,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • vue使用require.context实现动态注册路由

    vue使用require.context实现动态注册路由

    这篇文章主要介绍了vue使用require.context实现动态注册路由的方法,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • Vue的列表之渲染,排序,过滤详解

    Vue的列表之渲染,排序,过滤详解

    这篇文章主要为大家详细介绍了Vue的列表之渲染,排序,过滤,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 使用el-form之表单校验自动定位到报错位置问题

    使用el-form之表单校验自动定位到报错位置问题

    这篇文章主要介绍了使用el-form之表单校验自动定位到报错位置问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • vue this.$router和this.$route区别解析及路由传参的2种方式 && this.$route的各种语法

    vue this.$router和this.$route区别解析及路由传参的2种方式 && this.$route

    this.$router 相当于一个全局的路由器对象,包含了很多属性和对象(比如 history 对象),任何页面都可以调用其 push(), replace(), go() 等方法,本文给大家介绍Vue中this.$router与this.$route的区别 及push()方法,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • vue实现物流时间轴效果

    vue实现物流时间轴效果

    这篇文章主要为大家详细介绍了vue实现物流时间轴效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • vue数字类型过滤器的示例代码

    vue数字类型过滤器的示例代码

    本篇文章主要介绍了vue数字类型过滤器的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Vue 中获取当前时间并实时刷新的实现代码

    Vue 中获取当前时间并实时刷新的实现代码

    这篇文章主要介绍了Vue 中获取当前时间并实时刷新,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • vuejs2.0运用原生js实现简单的拖拽元素功能示例

    vuejs2.0运用原生js实现简单的拖拽元素功能示例

    本篇文章主要介绍了vuejs2.0运用原生js实现简单的拖拽元素功能示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02

最新评论