app.use 插件
// myPlugin.js
export default {
install(app) {
app.config.globalProperties.$myPlugin = () => {
console.log('This is a method from a plugin!')
}
}
}
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import MyPlugin from './myPlugin'
const app = createApp(App)
app.use(MyPlugin)
app.mount('#app')
<h1>{{ $myPlugin('greetings.hello') }}</h1>
app.config.globalProperties
可以直接在 main.js
写全局属性和函数,但是这种方式不推荐,不利于维护和团队开发。推荐通过 app.use
。
TS 全局属性和函数的类型
某些插件会通过 app.config.globalProperties
为所有组件都安装全局可用的属性。举例来说,我们可能为了请求数据而安装了 $http
,或者为了国际化而安装了 $translate
。为了使 TypeScript 更好地支持这个行为,Vue 暴露了一个被设计为可以通过 TypeScript 模块扩展来扩展的 ComponentCustomProperties
接口:
import axios from 'axios' // 如果不是第三方扩展,也建议写一个 export {} 在顶层避免出问题,具体查看官方文档,下方链接。
declare module 'vue' {
interface ComponentCustomProperties {
$http: typeof axios
$translate: (key: string) => string
}
}
app.provide
// main.js
import { createApp } from 'vue'
import App from './App.vue'
const app = createApp(App)
app.provide('globalMethod', () => {
console.log('This is a provided global method!')
})
app.mount('#app')
<template>
<div>
<button @click="globalMethod">Call Injected Method</button>
</div>
</template>
<script setup>
import { inject } from 'vue'
const globalMethod = inject('globalMethod')
</script>
标签:Vue,定义,app,myPlugin,vue,import,全局,App
From: https://www.cnblogs.com/Himmelbleu/p/18412663