vue-router 4匯總

一、vue和vue-router版本:

"vue": "^3.4.29",
"vue-router": "^4.4.0"

二、路由傳參:

方式一:

路由配置:/src/router/index.ts

import {createRouter,createWebHistory
} from "vue-router";const routes = [{path: "/",component: () => import("../Home.vue")},{path: "/map",component: () => import("../Map.vue")},{path: "/login",component: () => import("../Login.vue")}
];const router = createRouter({history: createWebHistory(),routes
});export default router;
  {path: "/map",component: () => import("../Map.vue")}

傳遞參數:src/components/Today.vue

<template><el-table:data="tableData"style="width: 100%":row-style="tableRowStyle"@row-click="onClickRow"><el-table-column prop="licensePlate" label="車牌號" width /><el-table-column prop="startLongitude" label="起始經度" width /><el-table-column prop="startDimension" label="起始緯度" width /><el-table-column prop="endLongitude" label="終點經度" /><el-table-column prop="endDimension" label="終點緯度" /><el-table-column prop="kilometerDriven" label="行程公里數" width /><el-table-column prop="averageVehicleSpeed" label="平均車速" width><template #default="scope"><el-buttonsize="small"type="info"@click="handleGetLocation(scope.$index, scope.row)">定位</el-button></template></el-table-column></el-table>
</template><script lang="ts" setup>
import { useRouter } from "vue-router";
const Router = useRouter();const handleGetLocation = (index: number, row: any) => {Router.push({path: "/map",query: {lon: 1.1,lat: 2.2}});
};
</script>
import { useRouter } from "vue-router";
const Router = useRouter();Router.push({path: "/map",query: {lon: 1.1,lat: 2.2}});

接收參數:/src/components/Map.vue

<template><div id="map">test</div>
</template><script setup>
import { useRoute } from "vue-router";
const route = useRoute();console.log(route.query.lon);
console.log(route.query.lat);
</script>

方式二:

路由配置:/src/router/index.ts

import {createRouter,createWebHistory
} from "vue-router";const routes = [{path: "/",component: () => import("../Home.vue")},{path: "/map/:lon/:lat",component: () => import("../Map.vue")},{path: "/login",component: () => import("../Login.vue")}
];const router = createRouter({history: createWebHistory(),routes
});export default router;
  {path: "/map/:lon/:lat",component: () => import("../Map.vue")}

傳遞參數:src/components/Today.vue

<template><el-table:data="tableData"style="width: 100%":row-style="tableRowStyle"@row-click="onClickRow"><el-table-column prop="licensePlate" label="車牌號" width /><el-table-column prop="startLongitude" label="起始經度" width /><el-table-column prop="startDimension" label="起始緯度" width /><el-table-column prop="endLongitude" label="終點經度" /><el-table-column prop="endDimension" label="終點緯度" /><el-table-column prop="kilometerDriven" label="行程公里數" width /><el-table-column prop="averageVehicleSpeed" label="平均車速" width><template #default="scope"><el-buttonsize="small"type="info"@click="handleGetLocation(scope.$index, scope.row)">定位</el-button></template></el-table-column></el-table>
</template><script lang="ts" setup>
import { useRouter } from "vue-router";
const Router = useRouter();const handleGetLocation = (index: number, row: any) => {window.open("/map/1.1/2.2", '_blank');
};
</script>
window.open("/map/1.1/2.2", '_blank');

接收參數:/src/components/Map.vue

<template><div id="map">test</div>
</template><script setup>
import { useRoute } from "vue-router";
const route = useRoute();console.log(route.params.lon);
console.log(route.params.lat);
</script>

三、路由鑒權:

路由配置:/src/router/index.ts

import {createRouter,createWebHistory
} from "vue-router";const routes = [{path: "/",component: () => import("../Home.vue")},{path: "/map/:lon/:lat",component: () => import("../Map.vue")},{path: "/login",component: () => import("../Login.vue")}
];const router = createRouter({history: createWebHistory(),routes
});router.beforeEach((to, from, next) => {// 根據token判斷是否登錄 并且判斷token是否過期if (localStorage["userToken"] === "fake-token") {// 登錄了就不允許回到login頁面if (to.path == '/login') {// 返回到login頁面就會強制跳轉到首頁next({ path: '/' })} else {// 沒有強制跳轉到login頁面就放行next()}} else {// 未登錄// 判斷路徑if (to.path == '/login') {// 如果本來就在login頁面就放行next()} else {// 如果不在login頁面就放行到login頁面next({ path: '/login', query: { redirect: to.path } })}}});export default router;

登錄頁:/src/Login.vue

<template><div class="login-wrapper"><div class="title">歡迎登錄<b style="color: rgb(27, 85, 226);">xxx平臺</b></div><div class="login"><div class="form-wrapper"><input type="text" class="form-control" placeholder="請輸入賬戶" /></div><div class="form-wrapper"><input type="password" class="form-control" placeholder="請輸入密碼" /></div><button class="login-btn btn-block" @click="handleLogin"><el-icon style="font-size: 18px;"><Avatar /></el-icon> 登 錄</button></div><div class="copyright">Copyright ? 2024 All right reserved</div></div><canvas id="canvas"></canvas>
</template><script lang="ts" setup>
import { onMounted } from "vue";
import { useRouter } from 'vue-router'
const router = useRouter()const handleLogin = () => {console.log("登錄開始")// 模擬登錄請求,實際應用中替換為API調用// const response = await loginService(username, password)// const userToken = response.data.tokenconst userToken = "fake-token"; // 模擬的用戶令牌// 存儲用戶令牌localStorage.setItem("userToken", userToken);// 重定向到主頁router.push("/");
};</script><style scoped></style>

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

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

相關文章

探索 WebKit 的緩存迷宮:深入理解其高效緩存機制

探索 WebKit 的緩存迷宮&#xff1a;深入理解其高效緩存機制 在當今快速變化的網絡世界中&#xff0c;WebKit 作為領先的瀏覽器引擎之一&#xff0c;其緩存機制對于提升網頁加載速度、減少服務器負載以及改善用戶體驗起著至關重要的作用。本文將深入探討 WebKit 的緩存機制&am…

代碼隨想錄leetcode200題之額外題目

目錄 1 介紹2 訓練3 參考 1 介紹 本博客用來記錄代碼隨想錄leetcode200題之額外題目相關題目。 2 訓練 題目1&#xff1a;1365. 有多少小于當前數字的數字 解題思路&#xff1a;二分查找。 C代碼如下&#xff0c; class Solution { public:vector<int> smallerNumb…

卷積神經網絡(CNN)和循環神經網絡(RNN) 的區別與聯系

卷積神經網絡&#xff08;CNN&#xff09;和循環神經網絡&#xff08;RNN&#xff09;是兩種廣泛應用于深度學習的神經網絡架構&#xff0c;它們在設計理念和應用領域上有顯著區別&#xff0c;但也存在一些聯系。 ### 卷積神經網絡&#xff08;CNN&#xff09; #### 主要特點…

解決C++編譯時的產生的skipping incompatible xxx 錯誤

問題 我在編譯項目時&#xff0c;產生了一個 /usr/bin/ld: skipping incompatible ../../xxx/ when searching for -lxxx 的編譯錯誤&#xff0c;如下圖所示&#xff1a; 解決方法 由圖中的錯誤可知&#xff0c;在編譯時&#xff0c;是能夠在我們指定目錄下的 *.so 動態庫的…

python函數和c的區別有哪些

Python有很多內置函數&#xff08;build in function&#xff09;&#xff0c;不需要寫頭文件&#xff0c;Python還有很多強大的模塊&#xff0c;需要時導入便可。C語言在這一點上遠不及Python&#xff0c;大多時候都需要自己手動實現。 C語言中的函數&#xff0c;有著嚴格的順…

Java基礎(六)——繼承

個人簡介 &#x1f440;個人主頁&#xff1a; 前端雜貨鋪 ?開源項目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;?♂?學習方向&#xff1a; 主攻前端方向&#xff0c;正逐漸往全干發展 &#x1…

【Web】

1、配倉庫 [rootlocalhost yum.repos.d]# vi rpm.repo ##本地倉庫標準寫法 [baseos] namemiaoshubaseos baseurl/mnt/BaseOS gpgcheck0 [appstream] namemiaoshuappstream baseurlfile:///mnt/AppStream gpgcheck0 2、掛載 [rootlocalhost ~]mount /dev/sr0 /mnt mount: /m…

QT操作各類數據庫用法詳解

文章目錄 創建內存SQLITE數據庫QSqlTableModel操作數據庫表連接國產數據庫多線程數據處理不指定數據庫名打開數據庫QT對各種數據庫的支持情況處理數據庫表名QT連接各種數據庫Qt提供了一個名為QtSQL模塊的強大組件, 使得在Qt應用程序中連接和操作多種類型的數據庫變得相對簡單。…

Vulnhub-Os-hackNos-1(包含靶機獲取不了IP地址)

https://download.vulnhub.com/hacknos/Os-hackNos-1.ova #靶機下載地址 題目&#xff1a;要找到兩個flag user.txt root.txt 文件打開 改為NAT vuln-hub-OS-HACKNOS-1靶機檢測不到IP地址 重啟靶機 按住shift 按下鍵盤字母"E"鍵 將圖中ro修改成…

Github 2024-07-06 開源項目日報 Top10

根據Github Trendings的統計,今日(2024-07-06統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Python項目3TypeScript項目2Rust項目2非開發語言項目1C++項目1QML項目1MDX項目1JavaScript項目1Assembly項目1免費編程書籍和學習資源清單 創建…

JS 四舍五入使用整理

一、Number.toFixed() 把數字轉換為字符串,結果的小數點后有指定位數的數字,重點返回的數據類型為字符串 toFixed() 方法將一個浮點數轉換為指定小數位數的字符串表示,如果小數位數高于數字,則使用 0 來填充。 toFixed() 方法可把 Number 四舍五入為指定小數位數的數字。…

Vue 3集成krpano 全景圖展示

Vue 3集成krpano 全景圖展示 星光云全景系統源碼 VR全景體驗地址 星光云全景VR系統 將全景krpano靜態資源文件vtour放入vue項目中 導入vue之前需要自己制作一個全景圖 需要借助官方工具進行制作 工具下載地址&#xff1a;krpano工具下載地址 注意事項&#xff1a;vuecli…

Hook 實現 Windows 系統熱鍵屏蔽(二)

目錄 前言 一、介紹用戶賬戶控制&#xff08;UAC&#xff09; 1.1 什么是 UAC &#xff1f; 2.2 UAC 運行機制的概述 2.3 分析 UAC 提權參數 二、 NdrAsyncServerCall 函數的分析 2.1 函數聲明的解析 2.2 對 Winlogon 的逆向 2.3 對 rpcrt4 的靜態分析 2.4 對 rpcrt4…

YOLOv8_obb數據集可視化[旋轉目標檢測實踐篇]

先貼代碼,周末再補充解析。 這個篇章主要是對標注好的標簽進行可視化,雖然比較簡單,但是可以從可視化代碼中學習到YOLOv8是如何對標簽進行解析的。 import cv2 import numpy as np import os import randomdef read_obb_labels(label_file_path):with open(label_file_path,…

探索 IPython 的環境感知能力:詳解 %env 命令的妙用

探索 IPython 的環境感知能力&#xff1a;詳解 %env 命令的妙用 在數據科學和編程的海洋中&#xff0c;環境變量扮演著至關重要的角色。IPython&#xff0c;這一強大的交互式計算工具&#xff0c;通過其內置的魔術命令 %env&#xff0c;為我們提供了與環境變量交互的強大能力。…

git基礎指令總結持續更新之git分支簡介和基本操作,解決合并和沖突,回退和rebase(變基),分支命名和分支管理,學習筆記分享

git 分支簡介和基本操作 Git 分支是 Git 的核心特性之一&#xff0c;它允許開發者在不同的開發線上工作&#xff0c;而不會影響主代碼庫。以下是 Git 分支的簡介和一些基本操作&#xff1a; 分支的概念&#xff1a; 分支是 Git 中的一個獨立開發線。創建分支時&#xff0c;G…

rtt設備驅動框架學習——內核對象基類object

內核對象基類object 這個基類是內核所有對象的基類 在rt-thread/include/rtdef.h文件里有對內核對象基類object的定義 /*** Base structure of Kernel object*/ struct rt_object {char name[RT_NAME_MAX]; /**< name of kernel object */rt…

清新簡約之美,開源個人博客:Jekyll Theme Chirpy

Jekyll Theme Chirpy&#xff1a;簡約不簡單&#xff0c;Chirpy 讓你的博客煥發新意- 精選真開源&#xff0c;釋放新價值。 概覽 Jekyll Theme Chirpy 是為Jekyll靜態網站生成器設計的現代主題&#xff0c;以其清新、簡約的設計風格和用戶友好的交互體驗受到開發者和博客作者的…

為企業知識庫選模型?全球AI大模型知識庫RAG場景基準測試排名

大語言模型常見基準測試 大家對于AI模型理解和推理能力的的基準測試一定非常熟悉了&#xff0c;比如MMLU&#xff08;大規模多任務語言理解&#xff09;、GPQA&#xff08;研究生級別知識問答&#xff09;、GSMSK&#xff08;研究生數學知識考察&#xff09;、MATH&#xff08…

Zabbix監控軟件

目錄 一、什么是Zabbix 二、zabbix監控原理 三、zabbix 安裝步驟 一、什么是Zabbix ●zabbix 是一個基于 Web 界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。 ●zabbix 能監視各種網絡參數&#xff0c;保證服務器系統的安全運營&#xff1b;并提供靈活的…