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

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

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

下拉框搜索

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

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

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

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

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

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

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

拼音搜索

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

pnpm i pinyin-pro

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

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

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

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

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

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

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

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

多个下拉框拼音搜索

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

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

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

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

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

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

性能优化

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

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

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

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

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

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

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

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

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

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

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

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

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

类似的场景

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

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

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

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

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

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

标签:
  • 热门焦点
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • Raft算法:保障分布式系统共识的稳健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可复制、可冗余、可容错”)的首字母缩写。Raft算法是一种用于在分布式系统
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

    1、前言在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • 2299元起!iQOO Pad明晚首销:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其最大的卖点
  • 北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top