Vue搜索详解

一、Vue搜索功能

Vue搜索功能是一个广泛应用于各种Web应用程序的功能,其能够在搜索框中实现快速搜索。

在Vue中使用搜索功能一般需要以下步骤:

  1. 创建一个搜索框组件
  2. 绑定搜索框中的value属性
  3. 监听搜索框value属性变化并自动检索
  4. 接收搜索结果并显示

以下是Vue搜索功能的示例代码:

  <template>
    <div>
      <input v-model="searchText" @input="search"/><!--绑定搜索框的value属性并监听input事件-->
      <ul>
        <li v-for="(item,index) in searchResult" :key="index">{{item}}</li><!--接收搜索结果并显示-->
      </ul>
    </div>
  </template>

  <script>
    export default {
      data(){
        return {
          searchText:"",//搜索框中的值
          searchResult:[]//搜索结果
        }
      },
      methods:{
        async search(){
          let result = await api.search(this.searchText);//根据搜索框的值查询结果
          this.searchResult = result;//接收结果并赋值
        }
      }
    }
  </script>

二、Vue搜索框模糊查询数据库

Vue搜索功能一般需要从数据库中获取数据并进行查询才能实现。因此,模糊查询数据库是Vue搜索功能实现的重要环节。

下面是一个基于MySQL的模糊查询的示例代码:

  const query = `SELECT * FROM users WHERE name like '%${keyword}%'`;//查询语句
  connection.query(query, function (error, results, fields) {
    if (error) throw error;
    res.statusCode = 200;
    res.setHeader('Content-Type', 'application/json');
    res.end(JSON.stringify(results));//返回查询结果
  });

三、Vue搜索框

Vue搜索框是Vue搜索功能中不可或缺的一部分,搜索框能够帮助用户输入查询关键词,具体实现如下:

  1. 创建一个搜索框组件
  2. 绑定搜索框中的value属性
  3. 监听搜索框value属性变化并自动检索

以下是Vue搜索框的示例代码:

  <template>
    <form @submit.prevent="search">
      <input type="text" v-model="keyword" placeholder="请输入要搜索的内容"/><!--绑定搜索框的value属性-->
      <button type="submit">搜索</button><!--监听submit事件进行搜索-->
    </form>
  </template>

  <script>
    export default {
      data(){
        return {
          keyword:"",//搜索框中的值
        }
      },
      methods:{
        async search(){
          let result = await api.search(this.keyword);//根据搜索框的值查询结果
          //TODO:接收结果并处理
        }
      }
    }
  </script>

四、Vue搜索框历史记录

Vue搜索框历史记录能够帮助用户轻松查找之前搜索的内容。实现方法如下:

  1. 在数据中添加一个记录历史搜索结果的属性
  2. 在搜索结果展示的组件中添加一个历史记录查看按钮
  3. 点击历史记录查看按钮弹出历史搜索记录弹窗
  4. 将历史搜索记录渲染出来

以下是Vue搜索框历史记录的示例代码:

  <template>
    <div>
      <input v-model="searchText" @input="search"/><!--绑定搜索框的value属性及input事件-->
      <button @click="showHistory">查看历史记录</button><!--历史记录查看按钮-->
      <div>
        <ul>
          <li v-for="(item,index) in searchHistory" :key="index" @click="search(item)">{{item}}</li>
        </ul>
      </div>
      <ul>
        <li v-for="(item,index) in searchResult" :key="index">{{item}}</li>
      </ul>
    </div>
  </template>

  <script>
    export default {
      data(){
        return {
          searchText:"",//搜索框中的值
          searchResult:[],//搜索结果
          searchHistory:[]//历史搜索记录
        }
      },
      methods:{
        async search(keyword){
          if(keyword){
            this.searchText = keyword;//点击历史搜索记录进行搜索时,赋值搜索框的值
          }
          let result = await api.search(this.searchText);//根据搜索框的值查询结果
          this.searchResult = result;//接收结果并赋值
          if(this.searchText && !this.searchHistory.includes(this.searchText)){//如果搜索框中有值并且历史记录中不存在该值,则添加到历史记录中
            this.searchHistory.push(this.searchText);
          }
        },
        showHistory(){
          //展示历史搜索记录弹窗,根据项目需要自行实现
        }
      }
    }
  </script>

五、Vue搜索功能如何实现

Vue搜索功能可以通过调用接口查询远程数据库以及添加历史搜索记录的方式来实现。

Vue搜索功能要注意以下几个环节:

  1. 创建一个搜索框组件
  2. 绑定搜索框中的value属性
  3. 监听搜索框value属性变化并自动检索
  4. 模糊查询数据库
  5. 接收搜索结果并显示
  6. 添加历史搜索记录
  7. 展示历史搜索记录

六、Vue模糊搜索功能

Vue模糊搜索功能是Vue搜索功能中的一个高级功能,其可以在搜索框中输入一个词或一个句子,然后从一定的范围中找到与其最相近的结果,而不是完全匹配。

以下是Vue模糊搜索功能的示例代码:

  export default {
    data(){
      return {
        keyword:"",
        searchResult:[]
      }
    },
    computed:{
      filteredResult(){
        return this.searchResult.filter(item=>item.includes(this.keyword));//筛选出包含keyword的结果
      }
    },
    methods:{
      async search(){
        let result = await api.search("");
        this.searchResult = result;
      }
    }
  }

七、Vue实现输入框搜索功能

Vue实现输入框搜索功能,除了需要监听input事件并根据输入的关键词进行查询外,还需要注意以下几点:

  1. 防抖
  2. 节流
  3. 限制显示条数

以下是Vue实现输入框搜索功能的示例代码:

  export default {
    data(){
      return {
        keyword:"",
        searchResult:[]
      }
    },
    methods:{
      async search(){
        let result = await api.search(this.keyword);
        this.searchResult = result;
      },
      debounceSearch:_.debounce(function(){
        this.search();
      },1000),
      throttleSearch:_.throttle(function(){
        this.search();
      },1000)
    }
  }

八、Vue搜索优化

Vue搜索优化是Vue搜索功能中的一个重要步骤,优化能够实现更快捷、更准确的搜索结果。

以下是Vue搜索优化的示例代码:

  export default {
    data(){
      return {
        keyword:"",
        searchResult:[]
      }
    },
    methods:{
      async search(){
        let result = await api.search(this.keyword);
        this.searchResult = result;
      }
    },
    watch:{
      "keyword":{
        immediate:true,//立即执行
        handler:function(){
          this.search();//实现自动搜索
        }
      }
    },
    computed:{
      searchedList(){
        return this.searchResult.slice(0,5);//限制显示搜索结果数量
      }
    }
  }

九、Vue搜索样式设置

Vue搜索样式设置是Vue搜索功能中的一个重要环节,能够美化搜索框,让用户更好的使用该功能。

以下是Vue搜索样式设置的示例代码:

  <template>
    <div class="search">
      <input class="search-input" type="text" placeholder="请输入" v-model="keyword" @input="search" />
      <ul class="search-result">
        <li v-for="(item,index) in searchedList" :key="index">{{item}}</li>
      </ul>
    </div>
  </template>

  <script>
    export default {
      data(){
        return {
          keyword:"",
          searchResult:[]
        }
      },
      methods:{
        async search(){
          let result = await api.search(this.keyword);
          this.searchResult == result;
        }
      },
      watch:{
        "keyword":{
          immediate:true,
          handler:function(){
            this.search();
          }
        }
      },
      computed:{
        searchedList(){
          return this.searchResult.slice(0,5);
        }
      }
    }
  </script>

  <style>
    .search{
      position:relative;
      width:300px;
      margin:0 auto;
    }
    .search-input{
      width:100%;
      padding:10px;
      border:1px solid #ccc;
      font-size:14px;
      border-radius:5px;
    }
    .search-result{
      position:absolute;
      width:100%;
      top:50px;
      left:0;
      background:white;
      border:1px solid #ccc;
      border-top:none;
      border-radius:5px;
      box-shadow:0 0 5px #ccc;
      padding:0;
      margin:0;
      max-height:300px;
      overflow-y:auto;
    }
    .search-result li{
      list-style:none;
      padding:5px 10px;
      cursor:pointer;
    }
    .search-result li:hover{
      background:#f4f4f4;
    }
  </style>

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/229012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-10 12:09
下一篇 2024-12-10 12:10

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25

发表回复

登录后才能评论