【Vue3+ElementPlus】菜單路由功能比較

方式一:通過動(dòng)態(tài)組件的方式躯喇,監(jiān)聽瀏覽器 hashchange 事件或使用 History API 來更新當(dāng)前組件

參考:https://cn.vuejs.org/guide/scaling-up/routing.html#official-router

<script setup>
import { ref, computed } from 'vue'
import Home from './Home.vue'
import About from './About.vue'
import NotFound from './NotFound.vue'

const routes = {
  '/': Home,
  '/about': About
}

const currentPath = ref(window.location.hash)

window.addEventListener('hashchange', () => {
  currentPath.value = window.location.hash
})

const currentView = computed(() => {
  return routes[currentPath.value.slice(1) || '/'] || NotFound
})
</script>

<template>
  <a href="#/">Home</a> |
  <a href="#/about">About</a> |
  <a href="#/non-existent-path">Broken Link</a>
  <component :is="currentView" />
</template>

優(yōu)點(diǎn):純 Vue3 就可以實(shí)現(xiàn)炼蹦,不需要引入額外的路由庫
缺點(diǎn):需要手?jǐn)]事件監(jiān)聽代碼,編譯后體積較小

方式二:使用路由庫 vue-router 進(jìn)行路由

<script lang='ts' setup>

import { RouteLocationRaw, useRouter } from 'vue-router';

// 選擇菜單時(shí)奶陈,在 <router-view> 渲染對(duì)應(yīng)的組件
const router = useRouter()
function handleSelete(index: RouteLocationRaw) {
  router.push(index)
}

</script>

<template>
  <div class="common-layout">
    <el-container>
          <!-- Element Plus Menu: https://element-plus.gitee.io/zh-CN/component/menu.html -->
          <el-menu class="el-menu-demo" mode="horizontal" :default-active="$route.path" :ellipsis="false"
            @select="handleSelete">
            <el-menu-item index="/aichat">ChatGPT</el-menu-item>
            <el-menu-item index="/aitranslate">AI翻譯</el-menu-item>
            <el-menu-item index="/aitext">AI文本</el-menu-item>
          </el-menu>
      <div style="height: 50px"></div>
      <router-view></router-view>
    </el-container>
  </div>
</template>

優(yōu)點(diǎn):路由功能強(qiáng)大怯屉,靈活性強(qiáng)
缺點(diǎn):需要引入路由庫 vue-router蔚舀,編譯后體積較大

方式三:使用 element plus 菜單的 router 進(jìn)行路由

<script lang='ts' setup>

</script>

<template>
  <div class="common-layout">
    <el-container>
          <!-- Element Plus Menu: https://element-plus.gitee.io/zh-CN/component/menu.html -->
          <el-menu class="el-menu-demo" mode="horizontal" :default-active="$route.path" :ellipsis="false" router>
            <el-menu-item index="/aichat">ChatGPT</el-menu-item>
            <el-menu-item index="/aitranslate">AI翻譯</el-menu-item>
            <el-menu-item index="/aitext">AI文本</el-menu-item>
          </el-menu>
      <div style="height: 50px"></div>
      <router-view></router-view>
    </el-container>
  </div>
</template>

router 屬性啟用后,可以省掉 handleSelete() 方法锨络,就變成純 element plus 路由了

優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單赌躺,純 element plus 的 menu 組件就可以實(shí)現(xiàn)(當(dāng)然底層渲染時(shí)還是會(huì)轉(zhuǎn)換成 ts 代碼的),不需要手?jǐn)]任何邏輯
缺點(diǎn):需要引入 UI 庫 element plus羡儿,編譯后體積較大

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寿谴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子失受,更是在濱河造成了極大的恐慌讶泰,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拂到,死亡現(xiàn)場(chǎng)離奇詭異痪署,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)兄旬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門狼犯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人领铐,你說我怎么就攤上這事悯森。” “怎么了绪撵?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵瓢姻,是天一觀的道長。 經(jīng)常有香客問我音诈,道長幻碱,這世上最難降的妖魔是什么绎狭? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮褥傍,結(jié)果婚禮上儡嘶,老公的妹妹穿的比我還像新娘。我一直安慰自己恍风,他們只是感情好蹦狂,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朋贬,像睡著了一般凯楔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兄世,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天啼辣,我揣著相機(jī)與錄音啊研,去河邊找鬼御滩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛党远,可吹牛的內(nèi)容都是我干的削解。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼沟娱,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼氛驮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起济似,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤矫废,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后砰蠢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蓖扑,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年台舱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了律杠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡竞惋,死狀恐怖柜去,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拆宛,我是刑警寧澤嗓奢,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站浑厚,受9級(jí)特大地震影響蔓罚,放射性物質(zhì)發(fā)生泄漏椿肩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一豺谈、第九天 我趴在偏房一處隱蔽的房頂上張望郑象。 院中可真熱鬧,春花似錦茬末、人聲如沸厂榛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽击奶。三九已至,卻和暖如春责掏,著一層夾襖步出監(jiān)牢的瞬間柜砾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工换衬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痰驱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓瞳浦,卻偏偏與公主長得像担映,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叫潦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容