当前位置:首页 > VUE

前端搜索高亮实现vue

2026-02-25 05:21:36VUE

实现前端搜索高亮(Vue)

在Vue中实现搜索高亮功能,可以通过动态渲染文本并结合正则表达式匹配关键词。以下是两种常见方法:

前端搜索高亮实现vue

方法一:使用v-html与正则替换

通过正则表达式匹配搜索词,将匹配部分包裹高亮样式标签(如<span class="highlight">),再通过v-html渲染。

<template>
  <div>
    <input v-model="searchText" placeholder="输入搜索词" />
    <div v-html="highlightedContent"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      originalText: '这里是需要被搜索的原始文本内容',
      searchText: ''
    };
  },
  computed: {
    highlightedContent() {
      if (!this.searchText) return this.originalText;
      const regex = new RegExp(this.searchText, 'gi');
      return this.originalText.replace(
        regex,
        match => `<span class="highlight">${match}</span>`
      );
    }
  }
};
</script>

<style>
.highlight {
  background-color: yellow;
  font-weight: bold;
}
</style>

方法二:使用渲染函数(Render Function)

适用于需要更复杂逻辑或避免v-html潜在XSS风险的场景。通过拆分文本为数组,动态生成带样式的片段。

<template>
  <div>
    <input v-model="searchText" placeholder="输入搜索词" />
    <div>
      <span v-for="(part, index) in parts" :key="index" :class="{ highlight: part.highlight }">
        {{ part.text }}
      </span>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      originalText: '这里是需要被搜索的原始文本内容',
      searchText: ''
    };
  },
  computed: {
    parts() {
      if (!this.searchText) return [{ text: this.originalText, highlight: false }];
      const regex = new RegExp(`(${this.searchText})`, 'gi');
      return this.originalText.split(regex).map(part => ({
        text: part,
        highlight: regex.test(part)
      }));
    }
  }
};
</script>

注意事项

  1. 性能优化:对长文本频繁搜索时,使用防抖(如lodash.debounce)减少计算次数。
  2. 大小写敏感:根据需求调整正则表达式标志(如i忽略大小写)。
  3. XSS防护:若搜索词来自用户输入,需对动态HTML内容进行转义(如使用DOMPurify库)。
  4. 多关键词支持:扩展正则表达式为/(word1|word2)/gi可匹配多个词。

前端搜索高亮实现vue

标签: 高亮vue
分享给朋友:

相关文章

vue无限菜单怎么实现

vue无限菜单怎么实现

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

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Objec…

vue实现高亮

vue实现高亮

Vue 实现文本高亮的方法 在 Vue 中实现文本高亮可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-html 指令 通过 v-html 指令可以动态插入 HTML 内容,将需要高…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结…

vue单选实现

vue单选实现

Vue 单选实现 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定一个变量,可以实现单选效果。当用户选择不同的…

vue实现换页

vue实现换页

Vue实现页面切换的方法 在Vue中实现页面切换通常可以通过Vue Router来完成。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是几种常见的实现方式:…