vue-11(命名路由和命名視圖)

命名路由和命名視圖

命名路由和命名視圖提供了組織和導航 Vue.js 應用程序的強大方法,尤其是在它們的復雜性增加時。它們提供了一種語義更合理、可維護的路由方法,使您的代碼更易于理解和修改。命名路由允許您按名稱引用路由,而不是依賴 URL,而命名視圖允許您根據當前路由在頁面的不同部分呈現多個組件。本課將詳細探討這些概念,為您提供在 Vue.js 項目中有效使用它們的知識和技能。

命名路由

命名路由提供了一種為應用程序中的每個路由分配唯一名稱的方法。這允許您使用路由的名稱而不是 URL 導航到路由,從而使您的代碼更具可讀性和可維護性。如果 URL 結構發生更改,則只需更新路由定義,并且按名稱對該路由的所有引用都將自動更新。

定義命名路由

要定義命名路由,只需向路由配置對象添加 name 屬性即可。

const routes = [{path: '/users/:id',name: 'user', // This is the named routecomponent: User,},{path: '/about',name: 'about',component: About,},
];

在此示例中,我們定義了兩個命名路由:userabout用戶路由還包括一個動態段 :id

使用命名路由導航

一旦你定義了一個命名路由,你就可以使用它通過 router.push() 以編程方式導航,或者在你的模板中使用 <router-link>

編程導航:

// Assuming you have access to the router instance (e.g., this.$router)
this.$router.push({ name: 'user', params: { id: 123 } });

在這里,我們將導航到 id 參數設置為 123 的用戶路由。

使用 <router-link> 導航:

<router-link :to="{ name: 'user', params: { id: 456 } }">Go to User 456</router-link>
<router-link :to="{ name: 'about' }">About Us</router-link>

<router-link> 組件會根據命名路由及其參數自動生成正確的 URL。

使用命名路由的好處

  • 可讀性: 使用名稱而不是 URL 可以使您的代碼更易于理解。
  • 可維護性: 如果更改 URL,則只需更新路由定義,而無需更新使用該 URL 的每個實例。
  • 靈活性: 命名路由可以更輕松地重構應用程序和更改 URL 結構,而不會破壞現有導航。

示例:電子商務應用程序

考慮一個帶有產品頁面的電子商務應用程序。您可以使用命名路由,而不是對產品頁面 URL 進行硬編碼:

const routes = [{path: '/products/:productId',name: 'product',component: ProductDetails,},
];

現在,要導航到特定的產品頁面:

<router-link :to="{ name: 'product', params: { productId: product.id } }">{{ product.name }}</router-link>

如果您稍后決定將產品頁面 URL 更改為 /item/:p roductId,則只需更新路由定義,使用名為 route 的產品的所有鏈接都將自動更新。

示例:博客應用程序

在博客應用程序中,您可能有用于單個博客文章的路由。使用命名路由可以簡化鏈接到這些文章的過程:

const routes = [{path: '/posts/:postId',name: 'post',component: BlogPost,},
];

鏈接到特定的博客文章:

<router-link :to="{ name: 'post', params: { postId: post.id } }">{{ post.title }}</router-link>

練習:在簡單應用程序中實現命名路由

  1. 使用 Vue CLI 創建一個新的 Vue.js 項目。
  2. 定義三個組件: 主頁產品和``聯系人
  3. 創建 router.js 文件并為每個零部件定義路由,分配 homeproductscontact 等名稱。
  4. App.vue 文件中,使用帶有命名路由的 <router-link> 組件創建指向每個頁面的導航鏈接。
  5. 為產品詳細信息 (/products/:id) 添加名稱為 product-detail 的動態路由。
  6. Products 組件中,創建一個產品列表,并使用 <router-link>product-detail 命名路由鏈接到每個產品的詳細信息頁面。

命名視圖

命名視圖允許您在單個線路中同時顯示多個零部件。這對于創建具有多個部分的布局(如側邊欄、主內容區域和頁腳)非常有用。

定義命名視圖

要定義命名視圖,請在路由配置中使用 components 選項,而不是 component 選項。components 選項是一個對象,其中每個鍵是視圖的名稱,每個值是要在該視圖中呈現的組件。

const routes = [{path: '/dashboard',components: {default: Dashboard, // The default viewsidebar: Sidebar,notifications: Notifications,},},
];

在此示例中,我們定義了三個命名視圖:defaultsidebarnotifications默認視圖在 <router-view> 中呈現,沒有 name 屬性,而其他視圖在 <router-view> 組件中呈現,具有相應的 name 屬性。

渲染命名視圖

要渲染命名視圖,您需要在模板中使用多個 <router-view> 組件,每個組件都有一個與要渲染的視圖名稱匹配的 name 屬性。

<template><div><header><h1>Dashboard</h1></header><div class="container"><aside><router-view name="sidebar"></router-view></aside><main><router-view></router-view>  <!-- Default view --></main><aside><router-view name="notifications"></router-view></aside></div><footer><p>&copy; 2023</p></footer></div>
</template>

在此示例中, 邊欄組件將呈現在 <router-view name=“sidebar”> 中, 儀表板組件(默認視圖)將呈現在 <router-view> 中, 通知組件將呈現在 <router-view name="notifications"> .

使用命名視圖的好處

  • 布局靈活性: 命名視圖允許您創建同時呈現多個組件的復雜布局。
  • 代碼組織: 它們通過將頁面的不同部分分離到單獨的組件中來幫助您組織代碼。
  • 可 重用: 您可以通過將相同的組件分配給不同的命名視圖,在不同的布局中重用這些組件。

示例:管理員面板

考慮一個帶有側邊欄、主要內容區域和通知部分的管理面板。您可以使用命名視圖來構建此布局:

const routes = [{path: '/admin',components: {default: AdminDashboard,sidebar: AdminSidebar,notifications: AdminNotifications,},},
];

模板將如下所示:

<template><div class="admin-layout"><aside class="sidebar"><router-view name="sidebar"></router-view></aside><main class="content"><router-view></router-view></main><aside class="notifications"><router-view name="notifications"></router-view></aside></div>
</template>

示例:具有多個部分的應用程序

假設有一個應用程序,其中包含頁眉、主要內容和頁腳。命名視圖可以幫助構建此結構:

const routes = [{path: '/app',components: {header: AppHeader,default: AppContent,footer: AppFooter,},},
];

模板:

<template><div class="app-layout"><header><router-view name="header"></router-view></header><main class="content"><router-view></router-view></main><footer><router-view name="footer"></router-view></footer></div>
</template>

練習:在 Dashboard 應用程序中實現命名視圖

  1. 從上一個練習擴展項目。
  2. 創建 3 個組件:DashboardContentDashboardSidebarDashboardNotifications
  3. /dashboard 創建路由,并使用命名視圖在具有側邊欄、主內容區域和通知部分的布局中呈現這些組件。
  4. App.vue 文件中,添加具有適當 name 屬性的 <router-view> 組件來渲染命名視圖。
  5. 使用 CSS 設置布局樣式,以創建具有視覺吸引力的儀表板。

組合命名路由和命名視圖

您可以組合命名路由和命名視圖,以創建更加靈活和可維護的路由配置。這允許您導航到特定布局,其中多個組件使用路由名稱同時呈現。

示例:組合命名路由和命名視圖

const routes = [{path: '/admin/users',name: 'admin-users',components: {default: AdminUsers,sidebar: AdminSidebar,notifications: AdminNotifications,},},
];

現在,你可以使用 admin-users 命名 route 導航到此布局:

<router-link :to="{ name: 'admin-users' }">Manage Users</router-link>

此方法提供了一種清晰簡潔的方式來導航到具有多個組件的復雜布局。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83725.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微軟認證考試科目眾多?該如何選擇?

在云計算、人工智能、數據分析等技術快速發展的今天&#xff0c;微軟認證&#xff08;Microsoft Certification&#xff09;已成為IT從業者、開發者、數據分析師提升競爭力的重要憑證。但面對眾多考試科目&#xff0c;很多人不知道如何選擇。本文將詳細介紹微軟認證的考試方向、…

視頻匯聚平臺EasyCVR“明廚亮灶”方案筑牢旅游景區餐飲安全品質防線

一、背景分析? 1&#xff09;政策監管剛性需求?&#xff1a;國家食品安全戰略及 2024年《關于深化智慧城市發展的指導意見》要求構建智慧餐飲場景&#xff0c;推動數字化監管。多地將“AI明廚亮灶”納入十四五規劃考核&#xff0c;要求餐飲單位操作可視化并具備風險預警能力…

Mysql莫名奇妙重啟

收到客戶反饋有時接口報504&#xff0c;查看應用日志發現故障期間數據庫連接失敗 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not receive…

半監督學習:低密度分離假設 (Low-Density Separation Assumption)

半監督學習(SSL)的目標是借助未標記數據輔助訓練&#xff0c;以期獲得比僅用帶標簽的監督學習范式更好的效果。但是&#xff0c;SSL的前提是數據分布需滿足某些假設。否則&#xff0c;SSL可能無法提升監督學習的效果&#xff0c;甚至會因誤導性推斷降低預測準確性。 半監督學習…

Python Day44

Task&#xff1a; 1.預訓練的概念 2.常見的分類預訓練模型 3.圖像預訓練模型的發展史 4.預訓練的策略 5.預訓練代碼實戰&#xff1a;resnet18 1. 預訓練的概念 預訓練&#xff08;Pre-training&#xff09;是指在大規模數據集上&#xff0c;先訓練模型以學習通用的特征表示&am…

vue3 eslint ts 關閉多單詞命名檢查

無效做法 import { globalIgnores } from eslint/config import {defineConfigWithVueTs,vueTsConfigs, } from vue/eslint-config-typescript import pluginVue from eslint-plugin-vue import skipFormatting from vue/eslint-config-prettier/skip-formatting// To allow m…

貪心,回溯,動態規劃

1.貪心算法 ? 貪心算法是一種在每一步選擇中都采取在當前狀態下最好或最優的選擇&#xff0c;從而希望全局最好或是最優的算法。 特點 局部最優選擇不能保證全局最優高效 適用條件 局部最優可以導致全局最優問題的最優解包含子問題的最優解 經典問題 活動選擇問題最短路徑最…

【Netty4核心原理⑧】【揭開Bootstrap的神秘面紗 - 服務端Bootstrap?】

文章目錄 一、前言二、流程分析1. 創建 EventLoopGroup2. 指定 Channel 類型2.1 Channel 的創建2.2 Channel 的初始化 3. 配置自定義的業務處理器 Handler3.1 ServerBootstrap#childHandler3.2 handler 與 childHandler 的區別 4. 綁定端口服務啟動 三、bossGroup 與 workerGro…

為什么需要自動下載瀏覽器驅動?

為什么需要自動下載瀏覽器驅動&#xff1f; 血淚場景重現 新人入職第一天&#xff1a; 花3小時配置Chrome/Firefox驅動版本不匹配導致SessionNotCreatedException 瀏覽器自動更新后&#xff1a; 所有測試腳本突然崩潰手動查找驅動耗時長 終極解決方案&#xff1a;自動下載驅…

NLP常用工具包

?做一次按NLP項目常見工具的使用拆解 1. tokenizer from torchtext.data.utils import get_tokenizertokenizer get_tokenizer(basic_english) text_sample "Were going on an adventure! The weather is really nice today." tokens tokenizer(text_sample) p…

在 Vue 的template中使用 Pug 的完整教程

在 Vue 的template中使用 Pug 的完整教程 引言 什么是 Pug&#xff1f; Pug&#xff08;原名 Jade&#xff09;是一種高效的網頁模板引擎&#xff0c;通過縮進式語法和簡潔的寫法減少 HTML 的冗長代碼。Pug 省略了尖括號和閉合標簽&#xff0c;使用縮進定義結構&#xff0c;…

【Android基礎回顧】四:ServiceManager

Android 中的 ServerManager 是 Android 框架中一個用于管理系統服務的核心機制。它是 Binder IPC 的一部分&#xff0c;用于在客戶端和服務端之間建立聯系&#xff0c;廣泛應用于系統服務&#xff08;如 ActivityManager、WindowManager 等&#xff09;的注冊與獲取。 1 Serv…

【Android基礎回顧】一:Binder機制是什么?有什么用?

Android中的Binder機制是Android系統中最核心和最基礎的進程間通訊機制。 1 什么是進程間通訊機制(IPC)&#xff1f; 眾所周知&#xff0c;Android系統基于Linux開發&#xff0c;Linux系統里面本來就有進程間通訊機制。 1.1 Linux的IPC(Inter-Process Communication)概覽 它…

Go語言爬蟲系列教程5:HTML解析技術以及第三方庫選擇

Go語言爬蟲系列教程5&#xff1a;HTML解析技術以及第三方庫選擇 在上一章中&#xff0c;我們使用正則表達式提取網頁內容&#xff0c;但這種方法有局限性。對于復雜的HTML結構&#xff0c;我們需要使用專門的HTML解析庫。在這一章中&#xff0c;我們將介紹HTML解析技術以及如何…

AtCoder 第408?場初級競賽 A~E題解

A Timeout 【題目鏈接】 原題鏈接:A - Timeout 【考點】 模擬 【題目大意】 長老會在 s 秒后睡去,進過 n 次叫醒,長老最后能否是保持清醒。 【解析】 模擬每一次拍擊叫醒的過程,查看本次時間距上次時間是否大于 s。注意:第一次拍擊叫醒應和 0 秒相減。 【難度】 …

Unity VR/MR開發-VR設備與適用場景分析

視頻講解鏈接&#xff1a;【XR馬斯維】VR/MR設備與適用場景分析&#xff1f;【UnityVR/MR開發教程--入門】_游戲熱門視頻

MyBatis 查詢功能實現全流程

一、創建maven項目 配置好相應的jdk 二、在數據庫建立相應的表格 1.因為Mybatis實際是對sql表的一系列操作&#xff0c;所以我們新建一個數據庫 2.在查詢界面運行下面指令創建一個user表 CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,username varchar(32) NOT NU…

tcp/udp

tcp/udp協議概述 傳輸層協議基本概念 傳輸層協議建立在網絡層和會話層之間&#xff0c;為應用層實體提供端到端的通信功能&#xff0c;確保數據包的順序傳送及數據的完整性。它利用網絡層提供的服務&#xff0c;并通過傳輸層地址&#xff08;端口號&#xff09;提供給高層用戶…

k8s集群安裝坑點匯總

前言 由于使用最新的Rocky9.5,導致kubekey一鍵安裝用不了&#xff0c;退回Rocky8麻煩機器都建好了&#xff0c;決定手動安裝k8s&#xff0c;結果手動安裝過程中遇到各種坑&#xff0c;這里記錄下&#xff1b; k8s安裝 k8s具體安裝過程可自行搜索&#xff0c;或者deepseek; 也…

深入解析 Dotnet-Boxed.Framework:提升 .NET 開發效率的利器

在現代 .NET 開發中&#xff0c;框架和工具的選擇對項目的開發效率和長期維護至關重要。Dotnet-Boxed.Framework 是一個開源框架&#xff0c;旨在簡化開發流程&#xff0c;提高生產力。它通過一組實用的工具和自動化功能&#xff0c;幫助開發者快速構建高質量的應用程序。本文將…