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>', // 需要运行时编译

}

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

相关推荐
兆子龙8 分钟前
从高阶函数到 Hooks:React 如何减轻开发者的心智负担(含 Demo + ahooks 推荐)
前端
狗胜13 分钟前
测试文章 - API抓取
前端
三小河13 分钟前
VS Code 集成 claude-code 教程:告别海外限制,无缝对接国内大模型
前端·程序员
jerrywus18 分钟前
前端老哥的救命稻草:用 Obsidian 搞定 Claude Code 的「金鱼记忆」
前端·agent·claude
球球pick小樱花23 分钟前
游戏官网前端工具库:海内外案例解析
前端·javascript·css
前端Hardy31 分钟前
干掉 Virtual DOM?尤雨溪开始"强推" Vapor Mode?
vue.js·vue-router
用户605723748730831 分钟前
AI 编码助手的规范驱动开发 - OpenSpec 初探
前端·后端·程序员
狗胜34 分钟前
AI观察日记 2026-03-02|CLAUDE、TYPE、APPFUNCTIONS:掘金热门里的下一步信号
前端
喝水的长颈鹿36 分钟前
【大白话前端 02】网页从解析到绘制的全流程
前端·javascript
明君8799737 分钟前
Flutter 实现 AI 聊天页面 —— 记一次 Markdown 数学公式显示的踩坑之旅
前端·flutter