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

}

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

相关推荐
半个落月2 小时前
LangSmith 全链路观测(下):用 Dataset 与 LLM Judge 量化评估 RA
javascript·langchain
半个落月3 小时前
LangSmith 全链路观测(上):用 LangGraph 与 Milvus 构建可追踪的 RAG 客服
javascript·langchain
Java后端的Ai之路3 小时前
06-React-Props
前端·react.js·前端框架
半个落月3 小时前
LangChain.js Agent 中间件实战:生命周期、动态工具与文件权限
javascript·langchain
Flynt4 小时前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
Csvn4 小时前
渲染管线
前端
程序员大阳5 小时前
副队长CSS教程(33)–圆角与透明
前端·css·透明·圆角
志尊宝5 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
鬼手点金5 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
柳杉5 小时前
借助 Codex 和可视化工作流,从调研到完整实现,3D 大屏竟然可以这么简单
前端·ai编程·数据可视化