如何在整个Vue.js 3项目中包含一个可用的库?

问题描述

根据this blog post,在Vue.js 2中包含常用库(例如axios)的正确方法是将它们设置为Vue原型对象的属性,如下所示:

import axios from 'axios';
Object.defineProperty(Vue.prototype,'$axios',{ value: axios });

不幸的是,这种方法在Vue.js 3中不再起作用。那么在整个项目中导入库的正确方法是什么?我不希望将它们设置为全局变量(即设置为window对象。)

解决方法

使用提供/注入作为替代

import { createApp } from 'vue'
import App from './App.vue'
import axios from 'axios';
    
const app = createApp(App)
app.provide('axios',axios ) // <-- define here
app.mount('#app')

然后在您要使用axios的任何组件中,您都将这样做

app.component('todo-list-statistics',{
  inject: ['axios'],created() {
    this.axios // --> Injected property
  }
}
,

我认为在vue 3项目中为我们提供库的最好方法是使用依赖注入 https://v3.vuejs.org/guide/component-provide-inject.html

但是,我只是建议您将库导入真正需要的地方,以具有更准确的智能感知和更好的三摇动

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...