【vue3】:全局搜索解决方案

2022/7/14 方案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
// 执行搜索
const search = (key) => {
  let res = fuse.search(key);
};
1
2
3
4