成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

快速上手Vue Router和組合式API:創建靈活可定制的布局

開發 前端
Vue Router 是在 Vue.js 單頁應用程序中創建路由的事實標準。但是,你是否知道,除了使用它將路由映射到頁面組件之外,還可以使用它來組合頁面布局?這是一個有趣的建議。讓我們看看如何實現。

該教程從基礎開始,介紹了Vue Router的概念,如何配置路由以及如何使用組合式API。它還介紹了如何在Vue Router中使用組合式API來創建布局。教程還包括如何使用路由鉤子函數和路由元信息來控制布局。

Vue Router 是在 Vue.js 單頁應用程序中創建路由的事實標準。但是,你是否知道,除了使用它將路由映射到頁面組件之外,還可以使用它來組合頁面布局?這是一個有趣的建議。讓我們看看如何實現。

假設我們正在構建一個博客,在該博客中,某些頁面可能在主要內容的兩側都有側邊欄:

圖片

其他頁面只需要在內容旁邊放置一個側邊欄,而且主內容前后的位置可以變化。

圖片

而其他頁面則根本不需要側邊欄。

圖片

我們該如何完成這個任務?選項1是為側邊欄創建組件,并根據需要在每個頁面中包含它們。例如, AboutShow.vue 將獲得一個類似于以下內容的路由記錄:

// router/index.js
{
path: '/about',
component: () => import('../pages/AboutShow.vue')
},

而相應的頁面組件可能是這樣的:

// *AboutShow.vue
<template>
<div class="flex ...">
<SidebarOne />
<main>....</main>
<SidebarTwo />
</div>
</template>

<script setup>
import SidebarOne from "@/components/SidebarOne"
import SidebarTwo from "@/components/SidebarTwo"
</script>*

無論如何,關于頁面始終會與側邊欄相耦合。在大多數情況下,這可能并不是什么大問題。然而,讓我們考慮一種替代方法,即在路由器級別而不是頁面級別組成布局。

命名視圖

為了實現這一點,我們將為路由記錄提供 components? (復數)選項,而不是 component (單數)選項:

{
path: '/about',
components: {
default: () => import('@/pages/AboutShow.vue'),
LeftSidebar: () => import('@/components/SidebarOne.vue'),
RightSidebar: () => import('@/components/SidebarTwo.vue'),
},
},

在這里,我們定義了關于路由應該包括一個默認組件,即關于頁面。這就是將顯示在RouterView?組件中。但是,它還應該包括一個 LeftSidebar? 組件,該組件映射到 SidebarOne? ,以及一個 RightSidebar? 組件,該組件映射到 SidebarTwo 。

現在,為了讓 LeftSidebar? 和 RightSidebar? 組件知道在哪里顯示,我們必須使用額外的路由器視圖,稱為命名視圖,以及我們的默認路由器視圖。我們還可以將路由器視圖包裝在帶有一些 Tailwind? 類的 div 中,以便美觀地布局。

<!-- App.vue -->
<template>
<!--...-->
<div class="sm:flex container p-5 mx-auto content justify-betweenflex-wrap">
<RouterView class="view main-content w-full order-2"></RouterView>
<RouterView name="LeftSidebar" class="view order-1 w-full"></RouterView>
<RouterView name="RightSidebar" class="view order-3 w-full"></RouterView>
</div>
<!--...-->
</template>

請注意,新的路由器視圖具有與我們提供給路由記錄的組件屬性的鍵相匹配的名稱屬性( LeftSidebar? 和 RightSidebar )

最后,這一次頁面本身可以完全排除側邊欄,結果是一樣的。

// *AboutShow.vue
<template>
<div>
<main>....</main>
</div>
</template>

圖片

這可能看起來有點繞,但現在很酷的是,有了這些額外的命名視圖,我們可以在任何新的路由記錄上靈活地添加一個或兩個側邊欄。

側邊欄

圖片

{
path: '/posts/:id',
components: {
default: () => import('@/pages/PostShow.vue'),
RightSidebar: () => import('@/components/SidebarTwo.vue'),
},
},

左側的側邊欄

圖片

//router/index.js
{
path: '/posts/:id',
components: {
default: () => import('@/pages/PostShow.vue'),
LeftSidebar: () => import('@/components/SidebarOne.vue'),
},

右側邊欄

圖片

//router/index.js
{
path: '/posts/',
components: {
default: () => import('@/pages/PostIndex.vue'),
RightSidebar: () => import('@/components/SidebarOne.vue'),
},

原文:https://vueschool.io/articles/vuejs-tutorials/composing-layouts-with-vue-router/

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2024-01-12 07:22:49

Vue組合式props

2022-06-13 08:39:21

Vue3API

2024-06-20 13:50:53

Vue 3API開發

2025-03-14 08:01:19

2022-03-24 15:28:43

Vue開發框架

2020-07-10 11:30:29

組合式架構傳統存儲存儲

2022-03-11 12:31:04

Vue3組件前端

2015-01-28 09:59:00

IBM混合云

2025-03-26 10:29:22

Vue3前端API

2017-11-02 08:44:50

組合式存儲架構

2024-06-25 12:20:31

2025-02-25 08:51:19

2021-12-10 08:13:02

MatplotlibpythonAPI

2022-02-22 07:37:26

VuePinia態管理庫

2022-06-21 12:09:18

Vue差異

2021-12-15 08:23:42

Vue3 插件Vue應用

2021-12-01 08:11:44

Vue3 插件Vue應用

2020-12-01 08:34:31

Vue3組件實踐

2010-08-04 10:40:40

2025-01-20 00:00:06

Vue開發工具庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av在线黄| 日韩精品四区 | 国产成人精品久久久 | 国产精品久久久久久网站 | 色综合久久久 | 欧美在线一区二区三区 | 91热在线 | 在线观看中文字幕 | 在线看片福利 | 国产一级片在线播放 | 成年女人免费v片 | 欧美在线a| 久久久久国产一区二区三区 | 日韩精品极品视频在线观看免费 | 在线一区视频 | 欧美一区二区三区四区视频 | 中文字幕第一页在线 | 亚洲精品一级 | 国产激情精品一区二区三区 | 亚洲第一av| 亚洲国产一区二区在线 | 91亚洲精华国产 | 国产午夜精品一区二区三区四区 | 一级毛片视频在线观看 | 免费精品 | 日日av | av免费网站在线观看 | 国产91久久精品一区二区 | 欧美一级免费看 | 两性午夜视频 | 国产精品毛片 | 日韩一区二区三区av | 欧美一区在线视频 | 91久久久精品国产一区二区蜜臀 | 成人欧美一区二区三区1314 | 黄片毛片免费看 | 在线一区二区三区 | 日韩黄色av | 国产成人免费视频网站高清观看视频 | 国产在线精品一区二区三区 | 天堂久久一区 |