当前位置:首页 > VUE

vue实现姓名脱敏

2026-02-18 08:14:00VUE

Vue 实现姓名脱敏的方法

在 Vue 中实现姓名脱敏可以通过多种方式,以下是几种常见的方法:

使用计算属性

通过计算属性对姓名进行处理,保留首尾字符,中间用星号替代:

computed: {
  desensitizedName() {
    if (this.name && this.name.length > 1) {
      const firstChar = this.name.charAt(0)
      const lastChar = this.name.charAt(this.name.length - 1)
      return `${firstChar}${'*'.repeat(this.name.length - 2)}${lastChar}`
    }
    return this.name || ''
  }
}

自定义过滤器

创建一个全局过滤器来处理姓名脱敏:

Vue.filter('desensitize', function(value) {
  if (!value) return ''
  if (value.length <= 2) return value.charAt(0) + '*'
  return value.charAt(0) + '*'.repeat(value.length - 2) + value.slice(-1)
})

使用方式:

<p>{{ name | desensitize }}</p>

使用指令方式

vue实现姓名脱敏

创建一个自定义指令来实现脱敏效果:

Vue.directive('desensitize', {
  bind(el, binding) {
    const value = binding.value
    if (value && value.length > 1) {
      const firstChar = value.charAt(0)
      const lastChar = value.charAt(value.length - 1)
      el.textContent = `${firstChar}${'*'.repeat(value.length - 2)}${lastChar}`
    } else {
      el.textContent = value || ''
    }
  }
})

使用方式:

<p v-desensitize="name"></p>

使用工具函数

创建一个单独的工具函数来处理脱敏逻辑:

vue实现姓名脱敏

// utils/desensitize.js
export function desensitizeName(name) {
  if (!name) return ''
  if (name.length <= 2) return name.charAt(0) + '*'
  return name.charAt(0) + '*'.repeat(name.length - 2) + name.slice(-1)
}

在组件中使用:

import { desensitizeName } from '@/utils/desensitize'

export default {
  computed: {
    desensitizedName() {
      return desensitizeName(this.name)
    }
  }
}

处理不同长度的姓名

针对不同长度的姓名可以有不同的脱敏策略:

function desensitizeName(name) {
  if (!name) return ''
  const length = name.length

  if (length === 1) return name
  if (length === 2) return `${name[0]}*`
  if (length === 3) return `${name[0]}*${name[2]}`
  return `${name[0]}${'*'.repeat(length - 2)}${name[length - 1]}`
}

注意事项

  1. 对于复姓或多字姓名,可能需要特殊处理
  2. 考虑国际化需求,不同语言环境下的姓名格式可能不同
  3. 性能考虑,避免在大量数据时频繁调用脱敏函数
  4. 可配置性,允许自定义脱敏规则和替换字符

以上方法可以根据实际项目需求选择使用,计算属性和过滤器方式较为简单,而指令和工具函数方式则更具复用性和灵活性。

标签: 姓名vue
分享给朋友:

相关文章

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [..…

vue状态管理怎么实现

vue状态管理怎么实现

Vue 状态管理实现方法 使用 Vuex(官方推荐) Vuex 是 Vue 的官方状态管理库,适合中大型应用。 安装 Vuex: npm install vuex --save 创建 Store…

vue无限菜单怎么实现

vue无限菜单怎么实现

实现 Vue 无限菜单的方法 递归组件实现嵌套菜单 使用 Vue 的递归组件特性可以轻松实现无限级嵌套菜单。通过组件调用自身的方式处理嵌套数据。 <template> <ul…

vue 路由 实现

vue 路由 实现

Vue 路由实现方法 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是实现 Vue 路由的详细步骤: 安装 Vue Router 通过 npm 或 y…

vue实现过程

vue实现过程

Vue 的实现过程 Vue 的实现过程可以分为多个核心模块,包括响应式系统、虚拟 DOM、模板编译等。以下是 Vue 的主要实现过程分析。 响应式系统 Vue 的响应式系统基于 Object.de…

vue实现弹幕

vue实现弹幕

Vue 实现弹幕功能 弹幕功能通常包括动态生成、滚动显示、颜色和速度随机化等特性。以下是基于 Vue 3 的实现方法。 核心思路 使用 CSS 动画控制弹幕从右向左滚动。 动态生成弹幕数据,随机设置…