Vue.js计算属性computed实现搜索结果高亮显示的逻辑封装

酷瑶吖_4234

酷瑶吖_4234

2026-03-21

837人浏览

原创

vue.js中搜索高亮应通过computed封装匹配与分段逻辑,用regexp动态构造正则遍历匹配位置并拼接标签,返回新对象数组供v-html安全渲染,兼顾xss防护与性能优化。

vue.js计算属性computed实现搜索结果高亮显示的逻辑封装

Vue.js 中用 computed 实现搜索高亮,核心是:对原始数据做动态过滤 + 关键词匹配 + HTML 片段生成。但直接在模板里拼接 v-html 容易出安全问题或逻辑混乱,推荐把“匹配+高亮”逻辑抽成可复用的计算属性或方法。

关键词匹配与分段高亮

高亮不是简单替换字符串,而是把文本按关键词拆成若干段(匹配前、匹配中、匹配后),再给匹配部分包裹 <mark></mark> 标签。需注意大小写处理、全字匹配(可选)、多关键词支持。

  • 用 RegExp 构造动态正则,开启 g 和 i 标志实现全局、不区分大小写匹配
  • 对每个待高亮字段调用 String.prototype.replaceAll()(或 split + join)不安全,应使用 matchAll 或正则 exec 遍历所有匹配位置,再用 slice 拼接带标签的片段
  • 若搜索词为空,直接返回原文本,避免正则报错或渲染异常

封装为可复用的 computed getter

在组件内定义一个计算属性,接收原始列表和当前搜索关键词,返回已高亮处理后的数组(每项含原始数据 + 高亮后的 title/description 字段)。

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.2万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习