1. 程式人生 > >Vue路由基本功能 demo

Vue路由基本功能 demo

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcss.com/vue/2.5.17/vue.js"></script>
		<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
	</head>
	<body>
<div id="app"></div> <script> //安裝路由外掛 Vue.use(VueRouter); //定義(路由)元件 var Home = { props: ['stu'], template: ` <transition name="slide"> <div> <h1>{{ $route.meta.title}}</h1> <!-- $route.params.stu 從路由解耦 --> <p> {{ stu }}</p> </div> </transition> `
}; var HomeA = { props: ['stu'], template: '<p>HomeA {{ stu }}</p>' }; var HomeB = { props: ['stu'], template: '<p>HomeB {{ stu }}</p>' }; var About = { template: ` <div> <h1>{{ $route.meta.title}}</h1> <p>{{ $route.params.id }}</p> <!--這裡的About頁面是被渲染的元件,同樣也可以包含自己的渲染 --> <router-view></router-view> <router-view name="aboutA1"></router-view> </div> `
}; var AboutA = { template: '<p>我是關於 AboutA </p>' }; var AboutA1 = { template: '<p>我是關於 頁面的巢狀命名檢視展示 </p>' }; var AboutB = { template: '<p>我是關於 AboutB </p>' } var NotFound = { template: '<p>Not Found Page</p>' }; var routes = [ { path: '/:stu', components: { <!-- 加上 s --> default: Home, homeA: HomeA, homeB: HomeB }, // 對於包含命名檢視的路由,你必須分別為每個命名檢視新增 `props` 選項: props: { default: true, homeA: true, homeB: false }, name: 'home', meta: { title: '首頁' } }, { path: '/about/:id', component: About, meta: { title: '關於' }, children: [{ // 當 /about/:id/a 匹配成功, // AboutA 會被渲染在 About 的 <router-view> 中 path: 'a', components: { <!-- 巢狀命名檢視 --> default: AboutA, aboutA1: AboutA1 }, meta: { title: 'AboutA' } }, { // 當 /about/:id/b 匹配成功 // AboutB 會被渲染在 About 的 <router-view> 中 path: 'b', component: AboutB, meta: { title: 'AboutB' } } ] }, { path:'/notFound', component:NotFound } ]; //對映路由 var router = new VueRouter({ routes: routes }); //全域性路由改變前鉤子 router.beforeEach(function(to, from, next) { if (to.matched.length === 0) { //匹配前往的路由不存在 next('/notFound'); } else { //meta 資料並不是只讀的,我們可以在程式碼中根據需求動態地改變它。 //例如:this.$route.meta.title = "還是首頁"; window.document.title = to.meta.title; next(); } }); var app = { data: function() { return { } }, template: ` <div> <h1>Hello App!</h1> <button @click="$router.push('/about/aaaaaaa')">程式設計式的導航</button> <button @click="$router.go(-1)">後退</button> <button @click="$router.go(1)">前進</button> <p> <!-- 使用 router-link 元件來導航. --> <!-- 通過傳入 to 屬性指定連結. --> <!-- <router-link> 預設會被渲染成一個 <a> 標籤 --> <router-link :to="{name:'home',params:{stu:'李四'}}">首頁</router-link> <router-link to="/about/aaaaaaa">關於</router-link> <router-link to="/about/aaaaaaa/a">關於 內的route頁面a</router-link> <router-link to="/about/bbbbbbbb/b">關於 內的route頁面b</router-link> </p> <!-- 路由匹配到的元件將渲染在這裡 --> <router-view></router-view> <!-- 命名檢視。有時候想一個頁面展示多個檢視,而不是巢狀展示 --> <router-view name="homeA"></router-view> <router-view name="homeB"></router-view> </div> ` }; new Vue({ el: '#app', data: function() { return { } }, router: router, //掛載路由配置 components: { "app": app }, template: '<app/>' });
</script> </body> </html>

demo按照vue官網搭建的demo
效果展示:
在這裡插入圖片描述