<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue-router之使用transition設置酷炫的路由組件過渡動畫效果</title> <script src="vue.js"></script> <script src="node_modules/vue-router/dist/vue-router.js"></script> <link rel="stylesheet" href="animate.css"> </head> <body> <div id="demo"> <router-view></router-view> </div> <script type="text/x-template" id="home"> <transition enter-active-class="animated rotateIn"> <div> <li v-for="v in news"> <a href="#" @click.prevent="go(v.id)">{{v.title}}</a> </li> </div> </transition> </script> <script type="text/x-template" id="content"> <transition enter-active-class="animated slideInDown"> <div> <h1>{{field.title}}--{{field.id}}</h1> <p> {{field.content}} </p> <a href="" @click.prevent="back()">返回首頁</a> </div> </transition> </script> <script> const notFound = { template: '<h1>NotFound</h1>' } var data = [ {id: 1, title: "php課程", content: "php是個比較牛的技術"}, {id: 2, title: "java課程", content: "java是個比較牛的技術"}, {id: 3, title: "pathon課程", content: "pathon是個比較牛的技術"} ] const home = { template: "#home", data() { return { news: data } }, methods: { go(id) { //var url='/content/'+id; //url第一種寫法 //var url={name:'content',params:{id:id}};//url第二種寫法 //this.$router.replace(url);//replace()替換歷史記錄中的跳轉: var url = {'path': '/content/' + id};//跳轉到詳情頁 //url第三種寫法 this.$router.push(url); } } } const content = { template: "#content", data() { return { field: {} } }, mounted() { var id = this.$route.params.id; for (let k = 0; k < data.length; k++) { if (data[k].id == id) { this.field = data[k]; } } }, methods: { back() { this.$router.go(-1); } } } let routes = [ {path: '/', component: home}, {path: '/content/:id', component: content, name: "content"}, {path: '/content/3', alias: ['/about']}, {path: '*', component: notFound} ]; //把組件交給路由器: let router = new VueRouter({routes}); new Vue({ el: "#demo", router }); </script> </body> </html>