前端综合搜索组件 SearchBox 使用详解!

举报
OpenTiny 发表于 2025/07/28 21:19:51 2025/07/28
【摘要】 本文由体验技术团队陈家梅原创。我不太喜欢严肃的表达,所以本文描述比较个人化,也希望大家可以放松,跟随本文的思路联想起来。好了,了解一个东西离不开哲学三问:是什么?怎么来的?用来干什么?所以主要从这三方面展开描述, 我们将详细介绍 TinyVue 组件库的 searchBox 组件的功能特性。这里建议大家进入 SearchBox 文档地址,跟着本文操作效果更佳,文档地址:https://ope...

本文由体验技术团队陈家梅原创。

我不太喜欢严肃的表达,所以本文描述比较个人化,也希望大家可以放松,跟随本文的思路联想起来。

好了,了解一个东西离不开哲学三问:是什么?怎么来的?用来干什么?所以主要从这三方面展开描述, 我们将详细介绍 TinyVue 组件库的 searchBox 组件的功能特性。

这里建议大家进入 SearchBox 文档地址,跟着本文操作效果更佳,文档地址:https://opentiny.github.io/tiny-search-box

searchbox 是什么?

1、长什么样?就一个输入框。


1.png


2、这个输入框与正常输入框的区别?

上图!


2.gif


图解步骤:


3.png



4.png


一顿操作,输入框里多了个标签。


5.png


外形上的区别:多了类似于级联面板的下拉框,这就是 searchbox 了。

3、为什么叫综合搜索组件?

"综合" 和 "搜索" 两个关键词就概括了此组件孵化的背景和环境。

input 和 search、select 等常见的输入框,场景单不单一?用的时候搜索类别不同还得自己动手差异化配置,甚至单个页面就用到六七个 input 和 search,有点像 "七年之痒",

回忆下日常生活,这么和 ta 朝夕相处下来,你是不是也想寻求改变了?我说的是输入搜索组件。

用户和开发者对输入框的使用场景向设计师提出了更高要求:"我们要把这些组件的能力都综合到一个组件里面,实现搜索功能"

此组件出来的来源就搞清楚了:集各种搜索需求场景于一身。

使用场景

不用我说,大家跟着我上面的思路都能根据自己以往的经验了解到这个组件的一些使用场景,所以请大家先回忆下以往使用 input、search 和 select 等组件的时候;

好!开始回忆!

闭上眼,看见天堂...。房间里有个形象气质极佳的人戴着耳机听着歌(没错就是你),手指飞快在 vscode 里面输入 <input .../>。

嘴里默念着:"产品又提需求,又要增加多一列的搜索过滤条件;之前输入关键字,只需按照表格中的某一列的数据检索就够了,现在这一个输入框怎么做啊?还有 5 分钟就下班了"。。。

好!打住。

1、使用场景一

根据表格不同列的数据,选中符合多重列条件的行数据。

举个例子:用户想在下面表格里找出:华南区的所有名称含有 "科技" 字眼的公司;

普通 input 怎么做呢?searchbox 又会怎么做?话不多说上图:


6.png


普通的 input 做法:


7.png



8.png


以上做法大家明显都能看出来了,不止对用户不友好,而且局限性很大。

再来看看 searchbox,对用户来说,searchbox 只需要点击两下,出现这两个标签,即可完成筛选过滤。对开发者来说:也只需要那只标签值,编写一下表格的行过滤算法即可。


9.gif


2、使用场景二

来呀,上图


10.png


像场景一的几个关键字搜索条件,或许还可以通过 select 组件完成;

但是,当用户想通过大小、时间范围筛选,此时开发者又能怎么做呢?

用户在使用时,可不会想到自己要手动输入 "≥、≤或者 2025/02/21 10:00:00 - 2025/03/01 00:00:00" 等关键字。

这对用户来说不仅是一种折磨,对我们开发人员来说,如何识别,分割这个关键字也是一个头疼的事......

"诶!不如一股脑交给后端来处理吧。或者额外增加一个时间选择器组件、大小输入组件。用户的笔记本电脑屏幕虽小一点,但空间,挤挤总会有的"。

产品同事的关又过不了了。

但是当我们拥有 searchbox


11.gif


图解步骤:

  • 选择大小


12.png

 

13.png


  • 选择日期:


14.png


情况就完全不一样了,是不是很酷。

3、场景三、四......

相信大家在业务开发过程中遇到类似或相关的场景还有很多,这个就留给大家自己去回忆了,你们最有发言权。

怎么用?

说了这么多,怎么用呢?很简单!

两步走:安装 -> 使用 即可。

1、安装:参考官网文档(https://opentiny.github.io/tiny-search-box/usage)

// 命令行安装

npm i @opentiny/vue-search-box

import Vue from 'vue';

import TinySearchBox from '@opentiny/vue-search-box';

// 在文件主入口引入样式:

@import '@opentiny/vue-search-box/dist/index.css';

Vue.use(TinySearchBox);

2、使用:基础用法

来,狠狠点他:hhttps://opentiny.github.io/tiny-search-box/examples/basic-usage

<script setup lang="ts">

import { ref } from 'vue'

const tags = ref([])

const items = ref([

  {

    label: '大小',

    field: 'size', // 此筛选条件的唯一标识符

    type: 'numRange', // 指明大小范围类型的筛选类型

    unit: 'GB', // 还有单位

    start: 1, // 最小值的默认赋值

    min: 1, // 最小值的限制是1

    max: 100 // 最大值的限制是100

  }

])

</script>

<template>

  <tvp-search-box v-model="tags" :items="items" />

</template>

好好好,来看看效果

15.gif

 图解步骤:

16.png

能看到这,只想悄悄告诉你,已经到了快说再见的时候了;

但组件能力远不止如此,最后的小部分篇幅我们让组件的部分功能特点亮个相。

组件的能力和优势?

除了正常的过滤搜索功能外,searchbox 还增加了哪些实用的技巧?

1、快速切分生成多个标签

适用场景:一键筛选多个条件

17.gif

图解步骤:

18.png

2、属性分组

适用场景:区分前后端索引分组,前端和后端搜索都有需求

19.png

3、可编辑

适用场景:用户临时想修改筛选条件,但又不想删除此筛选条件后,再重新选择。

20.gif

图解步骤:

21.png

4、智能识别

适用场景:智能识别用户输入的是哪一种筛选条件

22.gif

图解步骤:

23.png

5、合并标签

适用场景:将多个用一类型的筛选条件合并为一个标签

24.gif

图解步骤:

25.png

特色功能:

1、控制用户可选择的时间跨度

适用场景:给后端检索功能缩小范围,限制用户可选择的时间跨度。

26.png

2、自定义二级下拉面板的功能样式

适用场景:灵活开发

27.png

3、自由组合面板

适用场景:已有功能 + 灵活开发:即想使用组件原有的面板,又想加上自己定义的面板样式。

28.png

总结

终于到了说再见的时候,这篇文章是否让你初步了解了 searchbox 这个应运而生的组件?给你一秒钟思考。

想不到也没关系,那就请简单回想一下:这个组件,不仅解决了目前业务中各种过滤搜索的疑难杂症场景,比如时间日期、多重筛选等等,还增加智能识别、快速生成的实用功能。

如果能想起这些,说明本文给你留下了还不错的印象!那应该说明前世你对 searchbox 回眸了应该不止 500 次。

官网:https://opentiny.github.io/tiny-search-box

源码:https://github.com/opentiny/tiny-search-box(欢迎 Star ⭐)

关于 OpenTiny

欢迎加入 OpenTiny 开源社区。添加微信小助手:opentiny-official 一起参与交流前端技术~

OpenTiny 官网:https://opentiny.design

OpenTiny 代码仓库:https://github.com/opentiny

TinyVue 源码:https://github.com/opentiny/tiny-vue

TinyEngine 源码: https://github.com/opentiny/tiny-engine

欢迎进入代码仓库 Star🌟TinyEngine、TinyVue、TinyNG、TinyCLI、TinyEditor~ 如果你也想要共建,可以进入代码仓库,找到 good first issue 标签,一起参与开源贡献~

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。