最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue按鈕權限的實現(xiàn)示例

 更新時間:2024年08月01日 08:51:56   作者:勇寶趣學前端  
在編寫Vue代碼的時候,經(jīng)常會碰到各種權限問題,本文主要介紹了Vue按鈕權限的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下

在編寫Vue代碼的時候,經(jīng)常會碰到各種權限問題,如:登錄權限、路由權限、按鈕權限等。今天我們就好好來說一說這個按鈕權限到底是怎么一回事。

一、概念

權限字面理解的意思就是權力限制,體現(xiàn)在日常業(yè)務開發(fā)中就是不同的角色對應不同的權力。打個比方:老師的權力是教書育人,醫(yī)生的權力是救死扶傷,律師的權力是懲惡揚善。

在我們的工作中,經(jīng)常有一些按鈕是需要特定的角色來操作的,比如刪除按鈕只有管理員可以看到。
嘮叨兩句:按鈕權限是我們開發(fā)中很重要的一環(huán),這個思想我們一定要掌握。這才是我們開發(fā)一個大型系統(tǒng)所必須的技能。

二、按鈕權限的方式

通過本章我講教給小伙伴們?nèi)N實現(xiàn)按鈕權限的方式:自定義指令、函數(shù)式渲染、v-if判斷。

關于按鈕權限的場景一般是這樣的:比如當我們登錄成功之后,后臺會返回給我們當前用戶對應的角色信息,可能是一個字符串,或者可能是一個字符串數(shù)組。這樣我們就可以通過角色信息來判斷是否渲染當前按鈕。

2.1 自定義指定

首先我們先使用自定義指令來演示一下我們上邊的業(yè)務功能。關于自定義指令如何書寫,我就不做過多的解釋,如果需要,以后會補充相關知識。

1、編寫template部分

<div class="container">
    <button>admin權限按鈕</button>
</div>

模板中button標簽是我們的權限按鈕

2、編寫自定義指定:el是我們掛載的元素,binging可以獲取傳入的值

<div class="container">
    <button v-permission="['admin', 'apadmin']">admin權限按鈕</button>
</div>

<script setup>
const vPermission = (el, binding) => {
    // 獲取角色數(shù)組
    const roles = binding.value;
    if (!roles.includes('admin')) {
        el.remove();
    }
}
<script>

注意:通過自定義指令來判斷當前角色是否為admin,如果不滿足條件我們就移除button標簽。

2.2 v-if

v-if和自定義指令類似,我們通過綁定一個函數(shù)通過返回值來判斷是否顯示當前的button標簽,具體代碼如下:

代碼實現(xiàn)

<div class="container">
    <button v-if="!isPermission()">admin權限按鈕</button>
</div>

<script setup>
// 1. 這里模擬后臺返回的角色權限列表
const roles = ['admin', 'apadmin'];

const isPermission = () => {
    let flag = false;
    if (!roles.includes('admin')) {
        flag = true;
    }
    return flag;
}

2.3 函數(shù)式渲染

這種方式不同于前兩種,它是通過一個函數(shù)來動態(tài)渲染插槽中的內(nèi)容,這個就類似于我們寫一個組件。我認為這種方式要明顯好于前面兩種,尤其是v-if。

1、函數(shù)實現(xiàn)

我們創(chuàng)建一個PermComp.js文件,我們暴露出一個方法。

// PermComp.js 
import { getCurrentInstance } from 'vue';

export default ({ roles }) => {
    // 1. 獲取組件實例
    const instance = getCurrentInstance();
    if (roles.includes('admin')) {
        // 2. 渲染插槽內(nèi)容
        return instance.slots && instance.slots.default();
    }
}

2、組件使用

<template>
    <div class="container">
        <PermComp :roles="roles">
            <button>admin權限按鈕</button>
        </PermComp>
    </div>
</template>
<script setup>
import PermComp from './views/test/components/PermComp.js';

// 后臺返回的角色權限列表
const roles = ['admin', 'apadmin'];
</script>

2.4 小結(jié)

這里演示了三種按鈕權限實現(xiàn)的方式,然后我有說到最后一個是我比較推薦的,為什么?
因為通過v-if的實現(xiàn)方式我們可以看到,根據(jù)Vue的生命周期我們發(fā)現(xiàn),v-if的執(zhí)行是在我們DOM掛載之后完成的,所以這樣會浪費性能。因為這個按鈕我們可能根本就不需要,但是我們會有一個掛載-> v-if判斷-> 卸載, 這么一個過程。

三、總結(jié)

到此這篇關于Vue按鈕權限的實現(xiàn)示例的文章就介紹到這了,更多相關Vue按鈕權限內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue3項目頁面實現(xiàn)echarts圖表漸變色的動態(tài)配置的實現(xiàn)步驟

    Vue3項目頁面實現(xiàn)echarts圖表漸變色的動態(tài)配置的實現(xiàn)步驟

    在開發(fā)可配置業(yè)務平臺時,需要實現(xiàn)讓用戶對項目內(nèi)echarts圖表的動態(tài)配置,讓用戶脫離代碼也能實現(xiàn)簡單的圖表樣式配置,顏色作為圖表樣式的重要組成部分,其配置方式是項目要解決的重點問題,所以本文介紹了Vue3項目頁面實現(xiàn)echarts圖表漸變色的動態(tài)配置
    2024-10-10
  • vue項目優(yōu)化之通過keep-alive數(shù)據(jù)緩存的方法

    vue項目優(yōu)化之通過keep-alive數(shù)據(jù)緩存的方法

    本篇文章主要介紹了vue項目優(yōu)化之通過keep-alive數(shù)據(jù)緩存的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 詳解使用vuex進行菜單管理

    詳解使用vuex進行菜單管理

    本篇文章主要介紹了詳解使用vuex進行菜單管理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Vue中@click.native的使用方法及場景

    Vue中@click.native的使用方法及場景

    在組件中時??吹紷click.native,在項目中遇到后,簡單介紹下,這篇文章主要給大家介紹了關于Vue中@click.native的使用方法及場景的相關資料,需要的朋友可以參考下
    2023-11-11
  • vue3中sync修飾符的使用詳解

    vue3中sync修飾符的使用詳解

    .sync修飾符是Vue中用于實現(xiàn)子組件修改父組件傳遞的props值并更新到父組件的功能,它實際上是一個語法糖,將子組件的props綁定到一個名為update:propName的自定義事件上,本文給大家介紹了vue3中sync修飾符的使用,需要的朋友可以參考下
    2023-10-10
  • Vue自定義元素身上的右鍵事件問題

    Vue自定義元素身上的右鍵事件問題

    這篇文章主要介紹了Vue自定義元素身上的右鍵事件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue數(shù)組的劫持逐步分析講解

    Vue數(shù)組的劫持逐步分析講解

    小編這次要給大家分享的是如何實現(xiàn)vue2.x數(shù)組劫持,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲
    2023-01-01
  • elementui如何解決el-table重復寫loading問題

    elementui如何解決el-table重復寫loading問題

    這篇文章主要介紹了elementui如何解決el-table重復寫loading問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue動態(tài)代理無須重啟項目解決方案詳解

    vue動態(tài)代理無須重啟項目解決方案詳解

    這篇文章主要為大家介紹了vue動態(tài)代理無須重啟項目解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Vue實現(xiàn)星級評價效果實例詳解

    Vue實現(xiàn)星級評價效果實例詳解

    這篇文章主要介紹了Vue實現(xiàn)星級評價效果的實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12

最新評論

盐城市| 且末县| 临海市| 鄂托克旗| 施秉县| 仁化县| 龙南县| 台安县| 乐昌市| 镇巴县| 宁国市| 枣阳市| 阿合奇县| 宝山区| 安化县| 峨眉山市| 高阳县| 呼玛县| 枝江市| 吴堡县| 全椒县| 壤塘县| 调兵山市| 泸溪县| 东安县| 正蓝旗| 嘉荫县| 华安县| 通江县| 盐边县| 湘乡市| 沙坪坝区| 富宁县| 化隆| 台北市| 伊川县| 通州区| 大厂| 长子县| 涞源县| 麟游县|