【vue3】:全局搜索解决方案
усилの博客 2022/7/12 方案vue3element-plus
# 全局搜索解决方案
需求:用户通过搜索框进行全局搜索,与当前系统路由进行匹配,用户点击匹配结果,可以跳转到该路径下的页面。
原理:
- 根据用户输入内容在数据源中进行 模糊搜索
- 获取数据源
- 根据匹配结果,将其渲染到下拉框组件中
- 点击下拉框选项,跳转到其他页面
这里需要借助第三方库:fuse.js
import Fuse from 'fuse.js'
let searchList = ref([
{
path: '/profile',
title: ['个人中心']
},
{
path: '/user/role',
title: ['用户', '角色列表']
}
])
fuse = new Fuse(searchList.value, {
// 是否按优先级进行排序
shouldSort: true,
// 匹配长度超过这个值的才会被认为是匹配的
minMatchCharLength: 1,
// name: 搜索的键
// weight 对应权重
keys: [
{
name: 'title',
weight: 0.7
},
{
name: 'path',
weight: '0.3'
}
]
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 执行搜索
const search = (key) => {
let res = fuse.search(key)
}
1
2
3
4
2
3
4