天天看點

Vue router 的使用--初級

在說 VueRouter 之前,首先要弄明白vueRouter 是幹什麼的,有什麼用

說出來其實很簡單,就是一個模闆替換的問題,當路由改變的時候,把和路由相關的模闆顯示出來,就是這麼簡單。但是,當我們不知道為什麼的時候,即使瞎貓碰到死耗子做出來了,也不知道是怎麼回事,下次仍然是不會,我想,我們應該要有追根究底的精神

1. 首先,寫html ,因為不論是替換與否,我們都是通過html來執行的,定義要替換的

2. 寫替換模闆

3.注冊vue對象,及替換要修改的變量即data

4.定義路由的映射關系

1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <script src="../js/vue.js"></script>
 8     <script src="../js/vue-router.js"></script>
 9     <title>Document</title>
10 </head>
11 <body>
12     <div id="app">
13         <div>
14             <!-- 書寫連結按鈕,也就是a标簽 -->
15             <a v-link="{path:\'/home\'}">Home</a>
16             <a v-link="{path:\'/about\'}">About</a>
17         </div>
18         <!-- 要使用路由替換的地方 ,先整出一個框框出來-->
19         <router-view></router-view>
20     </div>
21     <!-- 模闆替換的内容1 -->
22     <template id="home">
23         <div>
24                 <h3 class="a">Home page</h3>
25                 <p>{{content}}</p>
26         </div>
27     </template>
28     <!-- 模闆替換的内容2 -->
29     <template id="about">
30             <div>
31                     <h3 class="a">About page</h3>
32                     <p>{{content}}</p>
33             </div>
34     </template>
35 
36     <script>
37         var Home = Vue.extend({
38             template: \'#home\',
39             data: function() {
40                 return {
41                     content: \'this is home page!\'
42                 }
43             }
44         });
45         var About = Vue.extend({
46             template: \'#about\',
47             data: function() {
48                 return {
49                     content: \'this is about page!\'
50                 }
51             }
52         });
53         // 建立路由
54         var router = new VueRouter();
55         // 構造路由映射關系
56         router.map({
57             \'/home\': { // 這裡和 a連結裡的位址屬性對應
58                 component: Home,
59             },
60             \'/about\': { // 這裡和 a連結的位址屬性對應
61                 component: About,
62             }
63         });
64         // 路由重定向,當路由為\'/\'時,自動映射到\'/home\'頁面
65         router.redirect({
66             \'/\': \'/home\', // 當連結僞‘/’時,把它重定向為到 ‘/home’的連結
67         });
68         var app = Vue.extend({});
69         // 開啟路由功能
70         router.start(app, "#app");
71     </script>
72 </body>
73 </html>      
Vue router 的使用--初級

2. 在路由上加入bootstrap 排版

1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
 8     <script src="../js/vue.js"></script>
 9     <script src="../js/vue-router.js"></script>
10     <title>Document</title>
11 </head>
12 <body>
13     <div class="container" id="app">
14         <div class="row">
15             <div class="well well-lg">第一個路由應用</div>
16             <div class="col-md-3">
17                 <ul class="nav nav-pills nav-stacked">
18                     <li>
19                         <a href="" v-link="{path:\'/home\'}">home</a>
20                     </li>
21                     <li>
22                         <a href="" v-link="{path:\'/about\'}">about</a>
23                     </li>
24                 </ul>
25             </div>
26             <div class="col-md-9">
27                 <router-view></router-view>
28             </div>
29         </div>
30     </div>
31     <template id="home">
32         <div>
33             <h3>homepage</h3>
34             <p>{{content}}</p>
35         </div>
36     </template>
37     <template id="about">
38         <div>
39             <h3>aboutpage</h3>
40             <p>{{content}}</p>
41         </div>
42     </template>
43     <script>
44         var Home = Vue.extend({
45             template: \'#home\',
46             data: function() {
47                 return {
48                     content: "huanying2015,這裡是首頁内容"
49                 }
50             }
51         });
52         var About = Vue.extend({
53             template: \'#about\',
54             data: function() {
55                 return {
56                     content: "huanying2015,這裡是相關内容,就是其他相關内容"
57                 }
58             }
59         });
60         var router = new VueRouter();
61         router.map({
62             \'/home\': {
63                 component: Home,
64             },
65             \'/about\': {
66                 component: About,
67             }
68         });
69         router.redirect({
70             \'/\': \'/home\'
71         });
72         var App = Vue.extend({});
73         router.start(App, "#app");
74     </script>
75 </body>
76 </html>      
Vue router 的使用--初級

3.  模闆嵌套:

1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7     <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
  8     <script src="../js/vue.js"></script>
  9     <script src="../js/vue-router.js"></script>
 10     <title>Document</title>
 11 </head>
 12 <body>
 13     <div class="container" id="app">
 14         <div class="row">
 15             <div class="well well-lg">第一個路由應用</div>
 16             <div class="col-md-3">
 17                 <ul class="nav nav-pills nav-stacked">
 18                     <li><a href="" v-link="{path:\'/home\'}">首頁</a></li>
 19                     <li>
 20                         <a href="" v-link="{path:\'/about\'}">關于我們</a>
 21                     </li>
 22                 </ul>
 23             </div>
 24         </div>
 25         <div class="col-md-9">
 26             <router-view></router-view>
 27         </div>
 28     </div>
 29     <template id="home">
 30         <div>
 31             <h3>首頁</h3>
 32             <p>{{content}}</p>
 33         </div>
 34         <div>
 35             <ul class="nav nav-tabs">
 36                 <li>
 37                     <a href="" v-link="{path:\'/home/news\'}">新聞</a>
 38                 </li>
 39                 <li>
 40                         <a href="" v-link="{path:\'/home/video\'}">視訊</a>
 41                 </li>
 42             </ul>
 43         </div>
 44         <router-view></router-view>
 45     </template>
 46     <template id="about">
 47         <div>
 48             <h3>關于我們</h3>
 49             <p >{{content}}</p>
 50         </div>
 51     </template>
 52     <template id="news">
 53         <div>
 54                 <li>倒計時1天|CCTC 2017最全參會指南</li>
 55                 <li>200分鐘QA交流,14個網際網路應用架構和大資料技術案例在等你</li>
 56                 <li>自己動手擴充分布式調用鍊</li>
 57                 <li>分布式系統下的糾删碼技術之Erasure Code</li>
 58         </div>
 59     </template>
 60     <template id="video">
 61         <div>
 62                 <li>Microsoft釋出.NET架構指南草案</li>
 63                 <li>詳解Android中的SQLite資料庫存儲</li>
 64                 <li>攜程實時使用者行為系統實踐</li>
 65                 <li>帶着問題學 Machine Learning:什麼是機器學</li>
 66         </div>
 67     </template>
 68     <script>
 69         var Home = Vue.extend({
 70             template: \'#home\',
 71             data: function() {
 72                 return {
 73                     content: "huanying2015,這裡是首頁"
 74                 }
 75             }
 76         });
 77         var About = Vue.extend({
 78             template: \'#about\',
 79             data: function() {
 80                 return {
 81                     content: "huanying2015,這裡是關于我們的内容"
 82                 }
 83             }
 84         });
 85         var News = Vue.extend({
 86             template: "#news",
 87         });
 88         var Video = Vue.extend({
 89             template: "#video"
 90         });
 91         var router = new VueRouter();
 92         router.map({
 93             \'/home\': {
 94                 component: Home,
 95                 subRoutes: {
 96                     \'/news\': {
 97                         component: News,
 98                     },
 99                     \'/video\': {
100                         component: Video
101                     }
102 
103                 }
104             },
105             \'/about\': {
106                 component: About,
107                 subRoutes: {
108 
109                 }
110             }
111         });
112         router.redirect({
113             \'/\': \'/home\',
114             \'/home\': \'/home/news\'
115         });
116         var App = Vue.extend({});
117         router.start(App, "#app");
118     </script>
119 </body>
120 </html>      
Vue router 的使用--初級

4. VueRouter 參數應用:

1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7     <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
  8     <script src="../js/vue.js"></script>
  9     <script src="../js/vue-router.js"></script>
 10     <title>Document</title>
 11 </head>
 12 <body>
 13     <div class="container" id="app">
 14         <div class="row">
 15             <div class="well well-lg">第一個路由應用</div>
 16             <div class="col-md-3">
 17                 <ul class="nav nva-pills nav-stacked">
 18                     <li>
 19                         <a href="" v-link="{path:\'/home\'}">首頁</a>
 20                     </li>
 21                     <li>
 22                         <a href="" v-link="{path:\'/about\'}">關于我們</a>
 23                     </li>
 24                 </ul>
 25             </div>
 26             <div class="col-md-9">
 27                 <router-view></router-view>
 28             </div>
 29         </div>
 30     </div>
 31     <template id="home">
 32         <div>
 33             <h3>首頁</h3>
 34             <p >{{content}}</p>
 35         </div>
 36         <div class="a">
 37             <ul class="nav nav-tabs">
 38                 <li><a href="" v-link="{path:\'/home/news\'}">新聞</a></li>
 39                 <li><a href="" v-link="{path:\'/home/video\'}">視屏</a></li>
 40             </ul>
 41         </div>
 42         <div>
 43             <router-view></router-view>
 44         </div>
 45     </template>
 46     <template id="about">
 47             <div>
 48                 <h3>關于我們</h3>
 49                 <p>{{content}}</p>
 50             </div>
 51         </template>
 52 
 53     <template id="news">
 54             <ul>
 55                 <li><a v-link="{path: \'/home/news/detail/01\'}">倒計時1天|CCTC 2017最全參會指南</a></li>
 56                 <li><a v-link="{path: \'/home/news/detail/02\'}">200分鐘QA交流,14個網際網路應用架構和大資料技術案例在等你</a></li>
 57                 <li><a v-link="{path: \'/home/news/detail/03\'}">自己動手擴充分布式調用鍊</a></li>
 58                 <li><a v-link="{path: \'/home/news/detail/04\'}">分布式系統下的糾删碼技術之Erasure Code</a></li>
 59             </ul>
 60             <router-view></router-view>
 61         </template>
 62     <template id="video">
 63             <ul>
 64                 <li>Microsoft釋出.NET架構指南草案</li>
 65                 <li>詳解Android中的SQLite資料庫存儲</li>
 66                 <li>攜程實時使用者行為系統實踐</li>
 67                 <li>帶着問題學 Machine Learning:什麼是機器學</li>
 68             </ul>
 69         </template>
 70     <template id="detail">
 71                 <div>
 72                     <p>新聞詳情:  {{$route.params.id}}</p>
 73                     <p>目前路徑:{{$route.path}}</p>
 74                     <p>目前參數:{{$route.params | json}}</p>
 75                     <p>路由名稱:{{$route.name}}</p>
 76                     <p>路由查詢參數:{{$route.query | json}}</p>
 77                     <p>路由比對項:{{$route.matched | json}}</p>
 78                 </div>
 79             </template>
 80     <script>
 81         var Home = Vue.extend({
 82             template: \'#home\',
 83             data: function() {
 84                 return {
 85                     content: \'huanying2015,這裡是首頁頁面\'
 86                 }
 87             }
 88         });
 89         var About = Vue.extend({
 90             template: \'#about\',
 91             data: function() {
 92                 return {
 93                     content: \'huanying2015,這裡是關于相關也的頁面\'
 94                 }
 95             }
 96         });
 97         var News = Vue.extend({
 98             template: "#news"
 99         });
100         var Video = Vue.extend({
101             template: "#video"
102         });
103         var Detail = Vue.extend({
104             template: \'#detail\'
105         });
106         var router = new VueRouter();
107         router.map({
108             \'/home\': {
109                 name: \'home\',
110                 component: Home,
111                 subRoutes: {
112                     \'/news\': {
113                         name: \'news\',
114                         component: News,
115                         subRoutes: {
116                             \'/detail/:id\': {
117                                 name: \'detail\',
118                                 component: Detail
119                             }
120                         }
121                     },
122                     \'/video\': {
123                         component: Video
124                     }
125                 }
126             },
127             \'/about\': {
128                 component: About
129             }
130         });
131         router.redirect({
132             \'/\': \'/home\',
133             \'/home\': \'/home/news\'
134         });
135         var App = Vue.extend({});
136         router.start(App, \'#app\');
137     </script>
138 </body>
139 </html>      
Vue router 的使用--初級

5. a連結選中狀态:在a連結裡加入:activeClass:\'active\'

1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7     <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
  8     <script src="../js/vue.js"></script>
  9     <script src="../js/vue-router.js"></script>
 10     <title>Document</title>
 11 </head>
 12 
 13 <body>
 14     <div id="app" class="container">
 15         <div class="row">
 16             <div class="well well-lg">第一個路由應用</div>
 17             <div class="col-md-3">
 18                 <ul class="nav nav-pills nav-stacked">
 19                     <li><a href="#" v-link="{path : \'/home\', activeClass : \'active\'}">首頁</a></li>
 20                     <li><a href="#" v-link="{path : \'/about\', activeClass : \'active\'}">關于我們</a></li>
 21                 </ul>
 22             </div>
 23             <div class="col-md-9">
 24                 <router-view></router-view>
 25             </div>
 26         </div>
 27     </div>
 28     <template id="home">
 29                 <div>
 30                     <h3>首頁</h3>
 31                     <p>{{content}}</p>
 32                 </div>
 33                 <div>
 34                     <ul class="nav nav-tabs">
 35                         <li><a v-link="{path : \'/home/news\', activeClass : \'active\'}" href="#">新聞</a></li>
 36                         <li><a v-link="{path : \'/home/video\', activeClass : \'active\'}" href="#">視訊</a></li>
 37                     </ul>
 38                 </div>
 39                 <router-view></router-view>
 40             </template>
 41     <template id="about">
 42                 <div>
 43                     <h3>關于我們</h3>
 44                     <p>{{content}}</p>
 45                 </div>
 46             </template>
 47 
 48     <template id="news">
 49                 <ul class="nav nav-pills nav-stacked">
 50                     <li><a v-link="{path: \'/home/news/detail/01\', activeClass : \'active\'}">倒計時1天|CCTC 2017最全參會指南</a></li>
 51                     <li><a v-link="{path: \'/home/news/detail/02\', activeClass : \'active\'}">200分鐘QA交流,14個網際網路應用架構和大資料技術案例在等你</a></li>
 52                     <li><a v-link="{path: \'/home/news/detail/03\', activeClass : \'active\'}">自己動手擴充分布式調用鍊</a></li>
 53                     <li><a v-link="{path: \'/home/news/detail/04\', activeClass : \'active\'}">分布式系統下的糾删碼技術之Erasure Code</a></li>
 54                 </ul>
 55                 <router-view></router-view>
 56             </template>
 57 
 58     <template id="video">
 59                 <ul>
 60                     <li>Microsoft釋出.NET架構指南草案</li>
 61                     <li>詳解Android中的SQLite資料庫存儲</li>
 62                     <li>攜程實時使用者行為系統實踐</li>
 63                     <li>帶着問題學 Machine Learning:什麼是機器學</li>
 64                 </ul>
 65             </template>
 66     <template id="detail">
 67                 <div>
 68                     <p>新聞詳情:  {{$route.params.id}}</p>
 69                     <p>目前路徑:{{$route.path}}</p>
 70                     <p>目前參數:{{$route.params | json}}</p>
 71                     <p>路由名稱:{{$route.name}}</p>
 72                     <p>路由查詢參數:{{$route.query | json}}</p>
 73                     <p>路由比對項:{{$route.matched | json}}</p>
 74                 </div>
 75             </template>
 76     <script>
 77         var Home = Vue.extend({
 78             template: \'#home\',
 79             data: function() {
 80                 return {
 81                     content: \'huanying2015,這裡是首頁頁面\'
 82                 }
 83             }
 84         });
 85         var About = Vue.extend({
 86             template: \'#about\',
 87             data: function() {
 88                 return {
 89                     content: \'huanying2015,這裡是關于相關也的頁面\'
 90                 }
 91             }
 92         });
 93         var News = Vue.extend({
 94             template: "#news"
 95         });
 96         var Video = Vue.extend({
 97             template: "#video"
 98         });
 99         var Detail = Vue.extend({
100             template: \'#detail\'
101         });
102         var router = new VueRouter();
103         router.map({
104             \'/home\': {
105                 name: \'home\',
106                 component: Home,
107                 subRoutes: {
108                     \'/news\': {
109                         name: \'news\',
110                         component: News,
111                         subRoutes: {
112                             \'/detail/:id\': {
113                                 name: \'detail\',
114                                 component: Detail
115                             }
116                         }
117                     },
118                     \'/video\': {
119                         component: Video
120                     }
121                 }
122             },
123             \'/about\': {
124                 component: About
125             }
126         });
127         router.redirect({
128             \'/\': \'/home\',
129             \'/home\': \'/home/news\'
130         });
131         var App = Vue.extend({});
132         router.start(App, \'#app\');
133     </script>
134 </body>
135 </html>      
Vue router 的使用--初級