vue全局函数

35 篇文章 0 订阅

vue全局函数



文件目录结构

– src
|
|__main.js
|__test.js

全局方法

首先写一个全局方法放入 test.js 文件内

// 事先定义好的,为了vue识别注册之用
exports.install = function (Vue, options) {
    // 这里的“$myMethod”是函数名
    Vue.prototype.$myMethod = function (){
        console.log('我的第一个全局方法');
    };
};

使用上面的写法突然遇到一个很诡异的报错:

ReferenceError: exports is not defined

开始以为JSON.stringify({a:3})造成的,后来经过一番搜寻
参照@gaoryrt原答案
将代码修改为:

// main.js 里面使用 import commonFun,那么在 utils/index.js 里面你需要 export default
// 如果想在 utils/index.js 里面使用 exports.install =, 那么在 main.js 应该使用 import {install} 
export default {
    install(Vue, options)  {
        Vue.prototype.FuncA = {
            ...
        }
    }
}

注册

main.js 文件内引用并注册

// 因为test.js文件和main.js文件处在同级目录,所以需要添加前缀‘./’
import Test from './test'
// 注册
Vue.use(Test)

使用

在实际组件内使用:

// “$myMethod” 是之前定义好的全局函数名
this.$myMethod();
Vue 3 中,你可以使用 `app.config.globalProperties` 来定义全局函数,并且可以在整个应用程序中访问这些函数。 要传递参数给全局函数,你可以使用闭包或者使用一个工厂函数来创建一个带有参数的全局函数。 以下是使用闭包的示例: ```javascript // main.js import { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); // 定义全局函数 app.config.globalProperties.myGlobalFunction = (param) => { console.log('参数:', param); }; app.mount('#app'); ``` 在应用程序的任何组件中,你都可以直接调用 `myGlobalFunction` 并传递参数: ```javascript // MyComponent.vue export default { mounted() { // 调用全局函数并传递参数 this.$root.myGlobalFunction('Hello'); }, }; ``` 使用工厂函数的示例: ```javascript // main.js import { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); // 定义带有参数的全局函数的工厂函数 const createMyGlobalFunction = (param) => { return () => { console.log('参数:', param); }; }; // 创建带有参数的全局函数 app.config.globalProperties.myGlobalFunction = createMyGlobalFunction('Hello'); app.mount('#app'); ``` 同样,在应用程序的任何组件中,你可以直接调用 `myGlobalFunction`: ```javascript // MyComponent.vue export default { mounted() { // 调用全局函数 this.$root.myGlobalFunction(); }, }; ``` 这样,你就可以在 Vue 3 中传递参数给全局函数了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值