当前位置:首页 > 科技  > 软件

Vue3 中如何做高性能的拼音搜索,提高用户体验?

来源: 责编: 时间:2024-05-24 17:25:20 305观看
导读下拉框搜索最近页面中需要一个下拉框,并且支持搜索功能(搜索选项文本和拼音),这是一个挺普通的小功能,代码如下:request.ts 先准备一些假的下拉框数据,并模拟请求:图片Index.vue 中进行请求,并渲染下拉框,配置一些属性,支持搜索

下拉框搜索

最近页面中需要一个下拉框,并且支持搜索功能(搜索选项文本和拼音),这是一个挺普通的小功能,代码如下:KVv28资讯网——每日最新资讯28at.com

request.ts 先准备一些假的下拉框数据,并模拟请求:KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

Index.vue 中进行请求,并渲染下拉框,配置一些属性,支持搜索选项文本:KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

可以看到实现了搜索文本,但是产品说还得支持搜索拼音呢~可以看到当前是不支持搜索拼音的。KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

拼音搜索

拼音搜索其实也不难,用一些库即可,比如 pinyin-pro。KVv28资讯网——每日最新资讯28at.com

pnpm i pinyin-pro

我可以使用 pinyin-pro 这个库,在获取数据的时候为每一项的文本进行拼音翻译,并放到字段 keywords 中。KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

现在可以看到每一项都有一个 keywords 字段,里面存了每一项的文本和拼音。KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

接着,在页面中配置一下 Select 的搜索过滤函数。KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

现在就支持了文本搜索和拼音搜索了。KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

多个下拉框拼音搜索

上面例子是只有一个,那如果有多个下拉框呢?比如有两个下拉框,我准备了两个下拉框的假数据。KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

接着在页面中展示两个下拉框:KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

可以看到两个下拉框的拼音数据耗时情况,其实当时页面上不止两个下拉框,大概有十几个下拉框,且数据都很巨大,如果每一个下拉框都要接近200ms的耗时的话,那用户体验会很不好。KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

性能优化

根据观察,我发现我这个页面的十几个下拉框其实都有很多下拉项是相同的,这意味着,有一些项存在重复翻译的问题。KVv28资讯网——每日最新资讯28at.com

就比如这个“放米”,options1翻译过一遍了,options2还翻译一遍,这就导致了性能损耗。KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

所以其实可以使用缓存来进行优化,思路就是:KVv28资讯网——每日最新资讯28at.com

1、准备一个对象,key 是文本,value 是拼音KVv28资讯网——每日最新资讯28at.com

2、每次翻译的时候KVv28资讯网——每日最新资讯28at.com

先检测对象里是否能匹配到。KVv28资讯网——每日最新资讯28at.com

能匹配到直接用,不能匹配到才调用 pinyin-pro 进行翻译。KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

这样的话,能避免文本的重复翻译,从而提升性能,由于 options2 有很多跟 options1 相同的项,所以 options2 很多项的翻译都是直接取缓存的,数据处理的速度大大提升!KVv28资讯网——每日最新资讯28at.com

图片图片KVv28资讯网——每日最新资讯28at.com

其实这种方式也是有局限性的,如果每一个 options 的数据重合度都不高的话,那么这种优化方式也就没啥意义了KVv28资讯网——每日最新资讯28at.com

所以最好的方式还是叫后端翻译好拼音,传给前端。KVv28资讯网——每日最新资讯28at.com

类似的场景

其实不止是上面举的例子,还有其他项目中类似的场景,需要用到这种优化方式,比如:复杂的翻译、复杂的数据处理。KVv28资讯网——每日最新资讯28at.com

例子终究是例子,重要的是能举一反三。KVv28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-90669-0.htmlVue3 中如何做高性能的拼音搜索,提高用户体验?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 来自 Rust 生态的强烈冲击?谈谈 Leptos 在语法设计上的精妙之处

下一篇: 分享七个.NET开源、功能强大的快速开发框架

标签:
  • 热门焦点
  • K60至尊版刚预热 一加Ace2 Pro正面硬刚

    Redmi这边刚如火如荼的宣传了K60 Ultra的各种技术和硬件配置,作为竞品的一加也坐不住了。一加中国区总裁李杰发布了两条微博,表示在自家的一加Ace2上早就已经采用了和PixelWo
  • K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    Redmi的后性能时代战略发布会今天下午如期举办,在本次发布会上,Redmi公布了多项关于和联发科的深度合作,以及新机K60 Ultra在软件和硬件方面的特性,例如:“K60 至尊版,双芯旗舰
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
Top