Vue2通过this直接调用引入的js全局变量以及函数

本文介绍了如何在Vue项目中通过script.js创建全局变量和函数,并将其导出供组件间直接使用。步骤包括新建文件、导出对象、引入并注入原型,以便在Vue组件中无缝调用。

1.先在src下新建一个文件夹和对应js文件,我这里创建了script.js文件

 2.编写对应全局变量以及全局函数并默认导出

export default {
    val: '这是一个变量',
    func () {
        console.log('这是一个函数')
    }
}

3.在main.js里引入对应文件,并遍历放入Vue原型中

import Vue from 'vue'
import App from './App'
import router from './router'
// 此处引入script
import script from './script/script'

// 遍历script,将其中的对象放入Vue原型中
for (let s in script) {
  Vue.prototype[s] = script[s]
}

new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

4.之后在任意vue文件中就可以用this直接调用了

<script>
export default {
  name: '...',
  data () {
    return {}
  },
  methods: {
    testScript () {
      console.log(this.val)
      this.func()
    }
  }
}
</script>

 

### 通过全局变量引入调用 如果全局函数是通过一个 JS 文件导出的,例如 `base.js` 中定义的 `userName` 函数,可以在 Vue 项目中通过模块导入的方式使用: ```javascript // base.js const userName = function() { alert('用户名'); }; export default { userName } ``` 在 Vue 组件中引入调用函数: ```javascript import base from '@/utils/base'; export default { mounted() { base.userName(); // 调用全局函数 } } ``` 此方法适用于函数较少且需要按需引入的场景[^1]。 ### 通过 Vue 原型链添加全局函数Vue 3 中,可以通过 `app.config.globalProperties` 将函数添加到 Vue 实例的原型链上,使其在所有组件中均可访问: ```javascript // main.js import { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); // 添加全局函数 app.config.globalProperties.$showMessage = function(message) { alert(message); }; app.mount('#app'); ``` 在组件中使用: ```vue <template> <button @click="$showMessage('Hello Vue 3')">显示提示</button> </template> ``` 此方法适用于需要在整个应用中频繁调用函数[^2]。 ### 通过依赖注入(provide/inject)实现函数共享 如果希望在父子组件之间共享函数,可以使用 `provide/inject`: ```javascript // main.js import { createApp } from 'vue'; import App from './App.vue'; import { getAction } from '@/utils/api'; const app = createApp(App); app.provide('getAction', getAction); // 提供函数 app.mount('#app'); ``` 在子组件中注入并使用: ```javascript export default { inject: ['getAction'], methods: { fetchData() { this.getAction('/api/data', {}).then(response => { console.log(response); }); } } } ``` 此方法适用于组件层级较深、需要共享函数的场景[^3]。 ### 通过全局变量或模块导出函数 如果函数是独立定义的,例如一个通用的 HTTP 请求函数 `getAction`,可以通过模块导出并在需要的地方引入: ```javascript // api.js import { http } from '@/utils/axios'; export function getAction(url, params) { return http.request({ url, method: 'get', params }); } ``` 在组件中引入调用: ```javascript import { getAction } from '@/utils/api'; export default { methods: { loadData() { getAction('/api/list', { page: 1 }).then(res => { console.log('数据加载成功', res); }); } } } ``` 此方法适用于功能独立、需要按需引入函数[^4]。 ### 使用插件方式注册全局函数 可以将全局函数封装为 Vue 插件,并在 `main.js` 中注册: ```javascript // hs-export-plugin.js import { HSExport } from '@/utils/hs-export'; export default { install: (app) => { app.config.globalProperties.$callHSExport = () => { if (HSExport && typeof HSExport === 'function') { HSExport(); } else { console.error('HSExport 函数未定义或不可调用'); } }; } } ``` 在 `main.js` 中注册插件: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import HSExportPlugin from '@/plugins/hs-export-plugin'; const app = createApp(App); app.use(HSExportPlugin); app.mount('#app'); ``` 在组件中使用: ```vue <template> <button @click="$callHSExport">调用 HS Export</button> </template> ``` 此方法适用于需要统一管理多个全局函数的场景。 ### 总结 Vue引入调用全局函数的方式多样,具体选择取决于项目结构和函数使用频率。对于简单的函数,可以直接通过模块导入;对于需要在整个应用中使用的函数,可以通过原型链扩展;对于组件间共享的函数,可以使用依赖注入;对于统一管理的函数,可以封装为插件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值