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

}

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

相关推荐
麦麦麦当劳大王43 分钟前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript
小lu飞2 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
只睡四小时2 小时前
Three.js Sub-tick:漏判 60.7%→0
开发语言·javascript·性能优化·ecmascript·游戏开发·three.js·碰撞检测
smallcelebration2 小时前
151 从0开始搭建后端项目
前端·firefox
wangruofeng2 小时前
手机和电脑传文件,除了微信还有 LocalSend
前端
excel3 小时前
基于 GPT 的自动发布文章接口方案:从一句话或一张图片生成并发布内容
前端·javascript·后端
其实防守也摸鱼4 小时前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
朱涛的自习室5 小时前
212 个需求、22 万行代码:Agent 接管开源项目的 19 天
android·前端·人工智能
aZhe的全栈知识分享5 小时前
AI 还原 Figma 效果总达不到预期?先别急着让它写代码
前端·后端·面试
review445435 小时前
Codex Hooks 入门实战:生命周期事件、matcher 与5分钟跑通一个钩子
前端·agent·vibecoding