Vue 路由示例

main.ts

javascript 复制代码
import { createApp } from 'vue'
import Antd from 'ant-design-vue'
import 'ant-design-vue/dist/reset.css'
import './style.css'
import App from './App.vue'
import { createRouter, createWebHashHistory } from 'vue-router'
import Home from './views/Home.vue'
import About from './views/About.vue'

// 定义路由(使用 .vue 组件,在构建时预编译,无需运行时模板编译) 
//内联 template
//const Home = { template: '<div><h2>🏠 首页</h2><p>这是应用的主页内容。</p></div>' }
//const About = { template: '<div><h2>ℹ️ 关于我们</h2><p>这是一个使用 Vue 3 和 Vue Router 4 构建的单页应用 (SPA) 示例。</p></div>' }
 
const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About },
]

// 3. 创建路由实例并传递 `routes` 配置
const router = createRouter({
  // 使用 hash 模式,因为纯 HTML 文件不需要服务器配置支持
  history: createWebHashHistory(),
  routes,
})

const app = createApp(App)
app.use(Antd)
app.use(router)
// 等待路由就绪后再挂载,确保 router-view 能正确渲染
router.isReady().then(() => {
  app.mount('#app')
})

/**
 * 
 工作原理
import Antd from 'ant-design-vue':导入 ant-design-vue 的完整库。
app.use(Antd):把 Antd 注册到 Vue 应用上,相当于一次性注册了所有组件(如 a-row、a-col、a-button、a-form 等)。
全局可用:注册后,所有子组件(包括 layoutdemo.vue)都可以在模板里直接使用这些组件,无需再单独 import。
总结
ant-design-vue 是在 src/main.ts 中通过 app.use(Antd) 全局注册的,所以 layoutdemo.vue 里可以直接使用 a-row、a-col 等组件。
 * 
 */

App.vue

javascript 复制代码
<template>
  <div>
    <h1>Vue Router 示例</h1>

    <h1>Hello App!</h1>
    <nav>
      <RouterLink to="/" active-class="active-link">Go to Home! </RouterLink>
      <RouterLink to="/about" active-class="active-link">Go to About</RouterLink>
    </nav>

    <div class="router-view-content">
      <RouterView />
    </div>
  </div>
</template>

<style>
/* 简单的激活样式 */
.active-link {
  font-weight: bold;
  color: #42b983; /* Vue 绿色 */
}
/* 调整链接间距 */
nav a {
  margin: 0 5px;
  text-decoration: none;
}
</style>

<script setup lang="ts">
import { RouterLink, RouterView } from 'vue-router'
</script>

Vue 在 Vite 下默认使用 runtime-only 构建,不支持在运行时编译模板字符串。

原来在 main.ts 里用内联 template:

const Home = {

template: '<div><h2>🏠 首页</h2>...</div>', // 需要运行时编译

}

这种写法需要模板编译器,而默认构建里没有,所以会报错。

相关推荐
GISer_Jing3 分钟前
AI时代面试新常态——从“会用工具”到“深挖原理”的跨越
前端·人工智能·ai编程
IT_陈寒13 分钟前
React的useEffect把我坑惨了,这些闭包陷阱真要命
前端·人工智能·后端
前端之虎陈随易25 分钟前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·typescript·npm·node.js
ayqy贾杰32 分钟前
Cursor SDK发布!开发者可直接搬走其内核
前端·vue.js·面试
changshuaihua00134 分钟前
扣子开发指南
javascript·人工智能
椰猫子40 分钟前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库
love530love44 分钟前
如何在 Google Chrome 中强制开启 Gemini AI 侧边栏(完整图文教程)
前端·人工智能·chrome·windows
光影少年1 小时前
对typescript开发框架的理解?
前端·javascript·typescript
跨境数据猎手1 小时前
反向海淘代购系统:1688 / 淘宝自动代采 + API 同步(附可用源码)
前端
lUie INGA1 小时前
Go-Gin Web 框架完整教程
前端·golang·gin