Vue.js + vue-router 可以很简单的实现单页应用。
<router-link> 是一个组件,该组件用于设置一个导航链接,切换不同 HTML 内容。to 属性为目标地址, 即要显示的内容。
router-link
请注意,我们没有使用常规的 a 标签,而是使用一个自定义组件 router-link 来创建链接。这使得 Vue Router 可以在不重新加载页面的情况下更改 URL,处理 URL 的生成以及编码。我们将在后面看到如何从这些功能中获益。
<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/vue-router@4"></script>
<div id="app">
<h1>Hello App!</h1>
<p>
<!--使用 router-link 组件进行导航 -->
<!--通过传递 `to` 来指定链接 -->
<!--`<router-link>` 将呈现一个带有正确 `href` 属性的 `<a>` 标签-->
<router-link to="/">Go to Home</router-link>
<router-link to="/about">Go to About</router-link>
</p>
<!-- 路由出口 -->
<!-- 路由匹配到的组件将渲染在这里 -->
<router-view></router-view>
</div>
router-view
router-view 将显示与 url 对应的组件。你可以把它放在任何地方,以适应你的布局。
引入链接:
<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/vue-router@4"></script>
<!-- 字符串 -->
<router-link to="home">Home</router-link>
<!-- 渲染结果 -->
<a href="home">Home</a>
<!-- 使用 v-bind 的 JS 表达式 -->
<router-link v-bind:to="'home'">Home</router-link>
<!-- 不写 v-bind 也可以,就像绑定别的属性一样 -->
<router-link :to="'home'">Home</router-link>
<!-- 同上 -->
<router-link :to="{ path: 'home' }">Home</router-link>
<!-- 命名的路由 -->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
<!-- 带查询参数,下面的结果为 /register?plan=private -->
<router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>
简单实例:
<router-link>:该标签是一个vue-router中已经内置的组件,它会被渲染成一个<a>标签。
<router-view>:该标签会根据当前的路径,动态渲染出不同的组件。
网页的其他内容,比如顶部的标题/导航,或者底部的一些版权信息等会和<router-view>处于同一个等级。
在路由切换时,切换的是<router-view>挂载的组件,其他内容不会发生改变。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--导入框架-->
<!--<script src="https://cdn.staticfile.org/vue/3.0.5/vue.global.js"></script>-->
<script src="https://unpkg.com/vue@next"></script>
<script src="https://unpkg.com/vue-router@4"></script>
</head>
<body>
<div id="show">
<router-link to="/main">toMainPage</router-link><br/>
<router-link to="/prod">toProdPage</router-link><br/>
<router-link to="/sys">toSysPage</router-link><br/>
<router-view></router-view>
</div>
</body>
<template id="main">
<h1>aaa</h1>
</template>
<template id="product">
<h1>bbb</h1>
</template>
<template id="systemmgr">
<h1>ccc</h1>
</template>
<script>
//1.定义路由渲染页面 定义路由组件.
var Main={
template:main
}
var Product={
template:product
}
var System={
template:systemmgr
}
//2.定义路由路径
// 每个路由都需要映射到一个组件。
var routes=[{
path:"/main",component:Main
},{
path:"/prod",component:Product
},{
path:"/sys",component:System
}]
//3.路由的注册
//创建路由实例并传递 `routes` 配置
const router=VueRouter.createRouter({
4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。
history:VueRouter.createWebHashHistory(),
routes,// `routes: routes` 的缩写
})
//应用创建 5. 创建并挂载根实例
var app=Vue.createApp({})
确保 _use_ 路由实例使
//整个应用支持路由。
app.use(router)
app.mount("#show")
</script>
</html>