激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - 在 Vue.js 中使用嵌套路由

在 Vue.js 中使用嵌套路由

2021-04-19 02:27前端先鋒瘋狂的技術宅 JavaScript

嵌套路由允許更復雜的用戶界面以及相互嵌套的組件。讓我們創建一個相對簡單的用例,來展示 Vue Router 中嵌套路由的實用性。

隨著 Vue.js 單頁應用(SPA)變得相當復雜,你開始需要 Vue 路由以及嵌套路由。嵌套路由允許更復雜的用戶界面以及相互嵌套的組件。讓我們創建一個相對簡單的用例,來展示 Vue Router 中嵌套路由的實用性。

在 Vue.js 中使用嵌套路由

用 Vue CLI 進行設置

 

如果尚未安裝,請運行以下命令全局安裝 Vue CLI:

  1. $ npm install -g @vue/cli 

或者

  1. $ yarn global add @vue/cli 

現在你能從命令行運行 vue 命令了。讓我們創建一個名為 alligator-nest 的 Vue 應用:

  1. $ vue create alligator-nest 

在提示符下選擇默認預設(按 Enter 鍵)。之后,運行以下命令:

  1. $ npm install vue-router 

然后,在你選擇的編輯器中打開 alligator-nest 目錄。

基本代碼

 

以下 CSS 將幫助我們為 UI 定位元素。將其作為樣式表文件添加到 public/ 文件夾中,并在 public/index.html 中引用它。為此,我們將使用 CSS grid:

grid.css:

  1. .row1 { 
  2.   grid-row-start: 1; 
  3.   grid-row-end: 2; 
  4.  
  5. .row12 { 
  6.   grid-row-start: 1; 
  7.   grid-row-end: 3; 
  8.  
  9. .row123 { 
  10.   grid-row-start: 1; 
  11.   grid-row-end: 4; 
  12.  
  13. .row2 { 
  14.   grid-row-start: 2; 
  15.   grid-row-end: 3; 
  16.  
  17. .row23 { 
  18.   grid-row-start: 2; 
  19.   grid-row-end: 4; 
  20.  
  21. .row3 { 
  22.   grid-row-start: 3; 
  23.   grid-row-end: 4; 
  24.  
  25. .col1 { 
  26.   grid-column-start: 1; 
  27.   grid-column-end: 2; 
  28.  
  29. .col12 { 
  30.   grid-column-start: 1; 
  31.   grid-column-end: 3; 
  32.  
  33. .col123 { 
  34.   grid-column-start: 1; 
  35.   grid-column-end: 4; 
  36.  
  37. .col1234 { 
  38.   grid-column-start: 1; 
  39.   grid-column-end: 5; 
  40.  
  41. .col2 { 
  42.   grid-column-start: 2; 
  43.   grid-column-end: 3; 
  44.  
  45. .col23 { 
  46.   grid-column-start: 2; 
  47.   grid-column-end: 4; 
  48.  
  49. .col234 { 
  50.   grid-column-start: 2; 
  51.   grid-column-end: 5; 
  52.  
  53. .col3 { 
  54.   grid-column-start: 3; 
  55.   grid-column-end: 4; 
  56.  
  57. .col34 { 
  58.   grid-column-start: 3; 
  59.   grid-column-end: 5; 
  60.  
  61. .col4 { 
  62.   grid-column-start: 4; 
  63.   grid-column-end: 5; 

接下來,讓我們對 vue-cli 添加的默認文件進行一些更改。

從 src/components 文件夾中刪除 HelloWorld.vue,并從 src/App.vue 中刪除所有與其相關的東西。對 App.vue 中的 HTML 標記和 CSS 樣式進行以下修改。

  1. <template> 
  2.   <div id="app"> 
  3.     <h1 class="row1 col12">Alligator Nest</h1> 
  4.     <a class="row1 col3">Travels</a> 
  5.     <a class="row1 col4">About</a> 
  6.     <div class="row2 col234"></div> 
  7.   </div> 
  8. </template> 
  9. html, body { 
  10.   height: 100vh; 
  11.   width: 100vw; 
  12.   padding: 0; 
  13.   margin: 0; 
  14.  
  15. #app { 
  16.   font-family: Avenir, Helvetica, Arial, sans-serif; 
  17.   -webkit-font-smoothing: antialiased; 
  18.   -moz-osx-font-smoothing: grayscale; 
  19.   color: #2c3e50; 
  20.   padding: 2%; 
  21.   height: 100%; 
  22.   display: grid; 
  23.   grid-template-rows: 20% 80%; 
  24.   grid-template-columns: 25% 25% 25% 25%; 

如果你在項目的根目錄中運行 npm run serve,則可以將鼠標懸停在瀏覽器中的 localhost:8080 上,并查看框架布局。那些 display:grid 屬性很有用!現在我們可以開始創建路由了。

輸入 Vue 路由

 

在 /components 文件夾中創建一個名為 AboutPage.vue 的組件。它看起來像這樣:

  1. <template> 
  2.   <div> 
  3.     <h2>About</h2> 
  4.     <p>Alligators were around during the time of the dinosaurs.</p> 
  5.   </div> 
  6. </template> 
  7.  
  8. <script> 
  9.   export default { 
  10.     name: 'AboutPage', 
  11.   } 
  12. </script> 
  13.  
  14. <style scoped> 
  15.    
  16. </style> 

現在我們的 main.js 文件需要 /about 路由。它看起來像這樣。

  1. import VueRouter from 'vue-router'; 
  2. import Vue from 'vue'; 
  3. import App from './App.vue'; 
  4.  
  5. Vue.config.productionTip = false
  6.  
  7. import VueRouter from 'vue-router'; 
  8. Vue.use(VueRouter); 
  9.  
  10. import AboutPage from './components/AboutPage.vue'; 
  11.  
  12. const routes = [ 
  13.   { path: '/about', component: AboutPage }, 
  14.  
  15. const router = new VueRouter({ 
  16.   routes 
  17. }) 
  18.  
  19. new Vue({ 
  20.   render: h => h(App), 
  21.   router 
  22. }).$mount('#app'); 

最后,讓我們回到 App.vue,并將 “About” 的錨標記更改為屬性為 to="/about"的 標簽。然后,將第二個 div 更改為 標簽。確保保持網格定位類屬性不變。

現在,我們有了一個功能齊全的站點框架,并為 “About” 頁面處理了路由。

我們在此重點介紹路由功能,因此不會在樣式上話費太多時間。盡管如此,我們也要讓Travels 頁面看起來更精致一些。

首先,創建一個 TravelPage,方法與創建 AboutPage 相同。在 main.js 中引用它。

還需要創建以下兩個組件,這些組件最終將嵌套在 TravelPage.vue 中:

TravelAmericaPage.vue

  1. <template> 
  2.   <div> 
  3.     <p>Alligators can be found in the American states of Louisiana and Florida.</p> 
  4.   </div> 
  5. </template> 
  6.  
  7. <script> 
  8.   export default { 
  9.     name: 'TravelAmericaPage' 
  10.   } 
  11. </script> 
  12.  
  13. <style scoped> 
  14. </style> 

TravelChinaPage.vue

  1. <template> 
  2.   <div> 
  3.     <p>Alligators can be found in China's Yangtze River Valley.</p> 
  4.   </div> 
  5. </template> 
  6.  
  7. <script> 
  8.   export default { 
  9.     name: 'TravelChinaPage' 
  10.   } 
  11. </script> 
  12.  
  13. <style scoped> 
  14.  
  15. </style> 

配置嵌套路由

 

現在,讓我們同時更新 main.js 和 TravelPage.vue,以使用 children 來引用這些嵌套路由。必須將 main.js 更新為對 routes 常量具有以下定義:

  1. const routes = [ 
  2.   { 
  3.     path: '/travel', component: TravelPage, 
  4.     children: [ 
  5.       { path: '/travel/america', component: TravelAmericaPage }, 
  6.       { path: '/travel/china', component: TravelChinaPage} 
  7.     ] 
  8.   }, 
  9.   { 
  10.     path: '/about', component: AboutPage 
  11.   } 
  12. ]; 

請注意,子級的嵌套可以無限繼續下去。

并且 TravelPage.vue 可以通過以下方式編寫:

TravelPage.vue:

  1. <template> 
  2.   <div id="travel"> 
  3.     <h2 class="row1">Travels</h2> 
  4.     <div class="flex-container row2"> 
  5.       <router-link to="/travel/america">America</router-link> 
  6.       <router-link to="/travel/china">China</router-link> 
  7.     </div> 
  8.     <router-view class="row3"></router-view> 
  9.   </div> 
  10. </template> 
  11.  
  12. <script> 
  13.   export default { 
  14.     name: 'TravelPage' 
  15.   } 
  16. </script> 
  17.  
  18. <style scoped> 
  19. div { 
  20.   text-align: center; 
  21.  
  22. #travel { 
  23.   display: grid; 
  24.   grid-template-rows: 20% 40% 40%; 
  25.  
  26. .flex-container { 
  27.   display: flex; 
  28.   justify-content: space-around; 
  29. </style> 

檢出 localhost:8080,你將看到 Travels 頁面中包含 2 個子頁面!當你單擊任一鏈接時,我們的 URL 也會相應更新。

 

總結

 

希望本教程對你了解如何使用嵌套路由有幫助!

關于該主題的其他注意事項——我們可以使用動態段定義路由,例如 path:'/location/:id'。然后在這些路由的視圖上,可以將該 id 引用為 this.$route.params。當你希望在網站和應用上顯示更多特定類型的數據(用戶、圖片等)時,此功能非常有用。

原文地址:https://mp.weixin.qq.com/s?__biz=MzI3NzIzMDY0NA==&mid=2247500306&idx=1&sn=9c7562082ad301696f860bf2db46d104&chksm=eb6be749dc1c6e5f64808c3ebf6044bf569f34956a3cf264f3843850963edaca90a96609e81b&mpshare=1&s

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91久久国产综合精品女同国语 | 爱高潮www亚洲精品 chengrenzaixian | 国产自在线| 亚洲白嫩在线观看 | 亚洲黑人在线观看 | 久国产 | 久久亚洲精品11p | 亚洲情av| 国产又粗又爽又深的免费视频 | 国产精品99免费视频 | 久久免费视频一区二区三区 | 九九午夜| 免费一级毛片在线播放不收费 | 91久久综合 | chinese乱子伦xxxx国语对白 | 欧美女同hd | 久久精品中文字幕一区二区 | 国产一级一片免费播放 | 欧美日韩亚洲视频 | 成人久久18免费 | 色污视频在线观看 | 在线观看视频毛片 | 免费黄色入口 | 啊哈不要啊 | 欧美成人三级视频 | 97se亚洲综合在线韩国专区福利 | 欧美a黄 | 久草视频福利在线观看 | 日本精品视频一区二区三区四区 | 国产一区二区三区视频观看 | 国产精品久久久久免费视频 | 日本黄色大片免费 | 精品国产一区二区三区四区阿崩 | 国产亚洲综合一区二区 | 国产午夜小视频 | av资源在线 | 欧美性猛交xxxxx按摩国内 | 成人免费看视频 | 精品国产一区二区三区四区阿崩 | 久久免费视频5 | 免费观看一区 |