我使用以下方法创建了一个新项目:
vue create hello-world
Run Code Online (Sandbox Code Playgroud)
生成一个包含HelloWorld.vue, app.vue, main.js(etc ...) 文件的新项目。
现在我按照文档Npm vue-axios安装 Axios :
npm install --save axios vue-axios
Run Code Online (Sandbox Code Playgroud)
我在main.js文件中导入 Axios :
vue create hello-world
Run Code Online (Sandbox Code Playgroud)
现在我遇到了一个我不明白的问题。VueAxios 文档说你只需像这样使用它:
npm install --save axios vue-axios
Run Code Online (Sandbox Code Playgroud)
但是app在 Vue 3 中创建的方式是不同的。我认为这是问题的来源:
import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
Run Code Online (Sandbox Code Playgroud)
那么,如何正确导入axios?
我有以下文件
路由器.js
import VueRouter from 'vue-router'
export const router = VueRouter({
routes: [
{
...
}
]
})
Run Code Online (Sandbox Code Playgroud)
main.js
import { createApp } from 'vue'
import App from './App.vue'
const app = createApp(App)
...
import { router } from './router'
app.use(router)
...
app.mount('#app')
Run Code Online (Sandbox Code Playgroud)
然而,在执行此操作时,我收到以下错误 Uncaught TypeError: this is undefined - vue-router.esm.js:2828it似乎是 vue-router 库内的错误,因为错误发生在第 2828 行。
这是通过尝试导入 vue-router 而不尝试在应用程序中的其他任何地方使用它来实现的,我也以相同的方式使用 vuex 和导入导出/导入存储,并且它可以工作。
{createApp}我的猜测是我导入的 vue-router 是错误的,因为文档在示例中没有使用。是我导入错误,还是有其他原因导致它不起作用?
vuex 文档指定您必须将创建的商店传递给 vue 实例,如下所示
new Vue({
el: '#app',
store: store,
})
Run Code Online (Sandbox Code Playgroud)
我的问题是,我使用 CLI 创建了一个新的 vue 项目,并使用 create app 将应用程序安装在 mian.js 中,如下所示:
import App from './App.vue'
const app = createApp(App)
app.mount('#app')
Run Code Online (Sandbox Code Playgroud)
如何使用第二种方法传递商店,以便我可以从任何组件访问它,或者如何使用第一种方法正确安装应用程序?他们之间有什么区别?
根据我的理解createApp(),vue 3 中是新的,我不确定它是如何工作的,我似乎找不到正确的文档,new Vue({})和 之间有什么区别createApp()?
我确信我不理解一些基本概念,但我不知道是哪一个......
谢谢。