将 vitejs v2 添加到 Vue v3 时路由器不工作

Router not working when adding vitejs v2 to Vue v3

开发服务器一直使用 webpack 的应用现在应该使用 vite。除了路线外,一切似乎都运行良好(而且速度很快)。这些被简单地忽略,只呈现 App.vue 的内容。

这是package.json:

{
  "name": "mode",
  "version": "0.0.0",
  "scripts": {
    "dev": "vite"
  },
  "dependencies": {
    "vue": "^3.0.5",
    "vue-router": "^4.0.4"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^1.1.4",
    "@vue/compiler-sfc": "^3.0.5",
    "vite": "^2.0.2",
    "typescript": "~3.9.3"
  }
}

中央index.html是:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite App</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

src/main.ts 中加载了 router

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

createApp(App).use(router).mount('#app')

路由器定义在src/router/index.ts:

import { createRouter, createWebHistory } from 'vue-router'
import SomePage from '@/views/SomePage.vue'

const router = createRouter({
  history: createWebHistory(),
  routes: [{
      path: '/some',
      name: 'Some',
      component: SomePage
  }]
})

export default router

(从未显示)src/views/SomePage.vue 是:

<template>
  <div class="section">
    Some content on some page.
  </div>
</template>

这是(始终显示)App.vue:

<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <HelloWorld msg="Hello Vue 3 + Vite" />
</template>

<script setup>
import HelloWorld from './components/HelloWorld.vue'
</script>

有了这个 src/components/HelloWorld.vue:

<template>
  <h1>{{ msg }}</h1>
  <p>
    Fancy text.
  </p>
</template>

<script setup>
import { defineProps } from 'vue'

defineProps({
  msg: String
})
</script>

我希望 http://localhost:3000/some 显示 SomePage.vue 的内容,但只呈现 App.vue 的内容,与使用的路由无关。

感谢指出我在这里遗漏的内容以及为什么忽略了精细路线。

您需要添加路由视图才能转到路由的页面。

如果您想让 SomePage 成为 App.vue 的一部分,只需按

<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <router-view />
  <HelloWorld msg="Hello Vue 3 + Vite" />
</template>