vue中轻量级模糊查询fuse.js使用
由于本样例是基于vue3中来实现的,若你使用的是vue2,请在评论区中发表后,也会出vue2中的相关使用。fuse是一个前端自行进行模糊查询的相关插件,常用于系统路由菜单的相关搜索等数据量不太大的情况,若需要数据量很大,还是蛮建议通过后端返回数据的相关形式。
1.安装fuse.js
1.1如下是相关的引用和安装,我们可以发现这种的引入后,就只占用15.8K的大小
npm install fuse.js
import Fuse from 'fuse.js'
2.fuse相关配置项的说明
2.1下面是fuse中的一些配置项的相关说明,但在实际运用的时候,其中的某些配置项比较重要
3.fuse的实际运用
3.1 具体代码
这里我们是基于elementplus中的el-select组件来进行运用的,因为在这个组件中会有一个方法,remote-method就是在我们搜索之前会执行,此时就不需要在通过watch来监听search是否发生改变,因此这里的v-model就相当于是多余的,就类似于远程搜索。那么就会有人问,问什么循环中是option.item.title呢?那是因为通过fuse模糊查询出来的数据是被封装到一个一个的item中了。
<template><div class="hello"><el-select ref="headerSearchSelect" v-model="search" :remote-method="querySearch" filterable default-first-optionremote placeholder="Search" class="header-search-select" @change="change"><el-option v-for="option in search_result" :key="option.item.title" :value="option.item.title":label="option.item.author.firstName" /></el-select></div>
</template>
其实fuse中比较重要的就两个配置,这两个配置如下
一个初始化fuse
其中的keys中的相关配置项,就是我们目标数据list中的相关参数
//初始化搜索引擎
const init_search = (list) => {fuse.value = new Fuse(list, {shouldSort: true, //是否按分数对结果列表排序threshold: 0.4, //匹配算法阈值。阈值为0.0需要完全匹配(字母和位置),阈值为1.0将匹配任何内容。location: 0, // 确定文本中预期找到的模式的大致位置。distance: 100,minMatchCharLength: 1, // 模式的最大长度//搜索标题与作者名keys: [{name: 'title',weight: 0.7 //设置权重}, {name: 'author.firstName',weight: 0.3 //设置权重}]})
}
一个是相关列表
search_all.value = [{title: "Java虚拟机",author: {firstName: "王浩",lastName: "wanghao"}},{title: "人工智能",author: {firstName: "侯建军",lastName: "marquis"}}
]
具体结果
4.完整代码
<template><div class="hello"><el-select ref="headerSearchSelect" v-model="search" :remote-method="querySearch" filterable default-first-optionremote placeholder="Search" class="header-search-select" @change="change"><el-option v-for="option in search_result" :key="option.item.title" :value="option.item.title":label="option.item.author.firstName" /></el-select></div>
</template><script setup name="HelloWorld">
import { ref } from '@vue/reactivity'
import Fuse from 'fuse.js'const fuse = ref(undefined)//待全文搜索的全部数据
const search_all = ref([])
//搜索的结果
const search_result = ref([])
//后面的value的数据可以和后台返回的数据进行结核,形成远程搜索
search_all.value = [{title: "Java虚拟机",author: {firstName: "王浩",lastName: "wanghao"}},{title: "人工智能",author: {firstName: "侯建军",lastName: "marquis"}}
]
//搜索前出发
const querySearch = (search_value) =>{if(search_value === ''){search_result.value = []}else{search_result.value = fuse.value.search(search_value)console.log( search_result.value);}
}//初始化搜索引擎
const init_search = (list) => {fuse.value = new Fuse(list, {shouldSort: true, //是否按分数对结果列表排序threshold: 0.4, //匹配算法阈值。阈值为0.0需要完全匹配(字母和位置),阈值为1.0将匹配任何内容。location: 0, // 确定文本中预期找到的模式的大致位置。distance: 100,minMatchCharLength: 1, // 模式的最大长度//搜索标题与作者名keys: [{name: 'title',weight: 0.7 //设置权重}, {name: 'author.firstName',weight: 0.3 //设置权重}]})
}
//也可以将这个放在created生命周期,这里使用了setup语法糖
init_search(search_all.value)
</script>
若此文章对你有相关帮助的话,请帮忙点个赞,若有其他疑问,欢迎在评论中发表,我们共同进步
vue中轻量级模糊查询fuse.js使用相关推荐
- vue 搜索框模糊查询 + 优化(节流) + 关键字高亮
直接上代码 HTML视图层代码 <template><!-- 模糊查询 + 节流 + 高亮 --><div><inputtype="text&quo ...
- html实现模糊查询,用js实现模糊查询的几种方法
今天在做项目的时候,遇到一个需求是对列表进行模糊查询.对于模糊查询,一般都是传关键字给后端,由后端来做.但是有时候一些轻量级的列表前端来做可以减少ajax请求,在一定程度上提高用户体验.我目前的情况恰 ...
- 搜索框实现模糊查询方法 - js
日常开发中经常会遇到搜索框查询的例子,需要对数组中的元素进行检索并查询出所需的结果,通过如下方式简单实现了一个小的模糊查询,具体如下: 首先,用到了两个方法 1.对数组通过 filter 的方式遍历查 ...
- 一个简单的vue下拉模糊查询
前端代码 <el-autocompletev-model="accountSearch":fetch-suggestions="accounQuerySearchA ...
- vue前端实现模糊查询
<div class="blacklistPage"><van-search v-model="searchValue" placeholde ...
- (精华)2020年7月16日 vue Fuse.js模糊搜索引擎
<template><div class="hello"><el-input v-model="title" placeholde ...
- vue和js中如何实现模糊查询
先来看效果图 这种数据量少的场景适用于前端实现模糊查询 如何实现? <template><div class="container"><div cla ...
- vue的模糊查询和下拉菜单修改信息------------学习记录
HTML代码<div id="box"> <div id="myModal" class="modal hide fade" ...
- vue实现input输入模糊查询(三种方式)
vue实现input输入模糊查询(三种方式) 目录 vue实现input输入模糊查询(三种方式) 1 计算属性实现模糊查询 演示: 2 watch 监听实现模糊查询 3 通过按钮点击实现模糊查询 演示 ...
最新文章
- matlab中的single是什么类型_MATLAB 中cell数据类型的使用方法
- Android系统架构基本模式解析
- Hadoop大数据分布式文件系统hdfs的工作机制
- 16、Windows API 服务
- Smart Form Tutorial(适用新手学习)
- 人生致命的八个经典问题
- 【英语学习】【English L06】U06 Banking L3 Do you have a credit card?
- php一点通,编程一点通
- IAR下STM32工程建立基本步骤
- 贝叶斯估计原理及流程
- 从中煤陕西公司看政企移动信息化应用
- 挂载ntfs_Linux识别移动硬盘ntfs格式
- python 显示表格数据匹配_比较两个电子表格文件并提取机器匹配数据的最简单和最快的方法是什么?...
- 【Scratch案例实操】scratch我们爱编程 scratch编程案例教学 scratch创意编程 少儿编程教案
- Linux线程的创建与回收
- QComboBox下拉框样式
- linux制作flash软件,Ubuntu中轻松制作Flash短片
- 2022-2028年中国通信大数据行业深度调研及投资前景预测报告
- 【人工生态系统优化算法】基于人工生态系统优化算法求解单目标优化问题附matlab代码
- CodeForces 499C、Crazy Town
热门文章
- MyBatis xml动态sql insert批量插入 报错Operand should contain 1 column(s)
- 3DAI安卓SDK发布--单照片极速建模
- Vue 跨域下载或读取文件
- Fisher线性判别分析Fisher Linear Distrimination
- java上传文件到FTP服务器
- SQL:查询重复次数最多的名字和id
- Profile,多配置管理,maven和spring.profiles.active可以做到
- MQTT编译,及环境配置等
- 微信开发——人脸识别 车牌识别 语言识别
- python合并excel文件,并将文件名作为新的一列