基于vue实现多引擎搜索及关键字提示

实现基于Vue的多引擎搜索及关键字提示主要包括以下步骤:

  1. 构建基础页面结构

在HTML文件中,构造基础的页面结构,包括搜索框和搜索按钮等必要的组件。同时,引入Vue.js库和相关依赖。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>基于Vue的多引擎搜索及关键字提示</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  </head>
  <body>
    <div id="app">
      <h1>多引擎搜索及关键字提示</h1>
      <input type="text" v-model="searchText" v-on:input="search">
      <button v-on:click="search">搜索</button>
      <ul>
        <li v-for="engine in engines">
          <a v-bind:href="engine.searchUrl + encodeURIComponent(searchText)" target="_blank">{{ engine.name }}</a>
        </li>
      </ul>
    </div>
  </body>
</html>
  1. 定义搜索引擎数据

在Vue实例中,定义搜索引擎数据,包括引擎名称、搜索URL等相关信息,以数组形式存储。

var app = new Vue({
  el: '#app',
  data: {
    searchText: '',
    engines: [
      {
        name: '百度',
        searchUrl: 'https://www.baidu.com/s?wd='
      },
      {
        name: 'Google',
        searchUrl: 'https://www.google.com/search?q='
      }
    ]
  },
  methods: {
    search: function() {
      // 实现搜索逻辑
    }
  }
})
  1. 实现搜索逻辑

在Vue实例中,实现搜索逻辑,根据用户输入的搜索关键字以及选择的搜索引擎,生成对应的搜索URL,跳转到相应的搜索结果页面。此外,还可以利用第三方API获取搜索关键字的自动提示。

var app = new Vue({
  el: '#app',
  data: {
    searchText: '',
    engines: [
      {
        name: '百度',
        searchUrl: 'https://www.baidu.com/s?wd='
      },
      {
        name: 'Google',
        searchUrl: 'https://www.google.com/search?q='
      }
    ],
    suggestions: []
  },
  methods: {
    search: function() {
      if (this.searchText) {
        this.engines.forEach(function(engine) {
          window.open(engine.searchUrl + encodeURIComponent(this.searchText));
        }.bind(this));
      }
    },
    getSuggestions: function() {
      if (this.searchText) {
        var url = 'https://suggest.taobao.com/sug?code=utf-8&q=' + encodeURIComponent(this.searchText);
        axios.get(url)
          .then(function(response) {
            this.suggestions = response.data.result;
          }.bind(this))
          .catch(function(error) {
            console.log(error);
          });
      } else {
        this.suggestions = [];
      }
    }
  }
})
  1. 添加关键字提示功能

利用第三方API获取搜索关键字的自动提示,实现关键字提示功能。当用户输入搜索关键字时,通过AJAX异步加载关键字列表,并显示在页面上。

<div id="app">
  <h1>多引擎搜索及关键字提示</h1>
  <input type="text" v-model="searchText" v-on:input="getSuggestions" v-on:keyup.enter="search">
  <button v-on:click="search">搜索</button>
  <ul>
    <li v-for="suggestion in suggestions">
      <a v-bind:href="'https://www.baidu.com/s?wd=' + encodeURIComponent(suggestion[0])" target="_blank">{{ suggestion[0] }}</a>
    </li>
  </ul>
</div>

var app = new Vue({
  el: '#app',
  data: {
    searchText: '',
    engines: [
      {
        name: '百度',
        searchUrl: 'https://www.baidu.com/s?wd='
      },
      {
        name: 'Google',
        searchUrl: 'https://www.google.com/search?q='
      }
    ],
    suggestions: []
  },
  methods: {
    search: function() {
      if (this.searchText) {
        this.engines.forEach(function(engine) {
          window.open(engine.searchUrl + encodeURIComponent(this.searchText));
        }.bind(this));
      }
    },
    getSuggestions: function() {
      if (this.searchText) {
        var url = 'https://suggest.taobao.com/sug?code=utf-8&q=' + encodeURIComponent(this.searchText);
        axios.get(url)
          .then(function(response) {
            this.suggestions = response.data.result;
          }.bind(this))
          .catch(function(error) {
            console.log(error);
          });
      } else {
        this.suggestions = [];
      }
    }
  }
})
  1. 示例说明

下面是两个示例说明:

示例1:实现搜狗搜索引擎的支持

在Vue实例的数据部分添加搜狗搜索引擎的配置信息:

data: {
  searchText: '',
  engines: [
    {
      name: '百度',
      searchUrl: 'https://www.baidu.com/s?wd='
    },
    {
      name: 'Google',
      searchUrl: 'https://www.google.com/search?q='
    },
    {
      name: '搜狗',
      searchUrl: 'https://www.sogou.com/web?query='
    }
  ],
  suggestions: []
},

修改搜索逻辑部分,将搜索引擎根据用户选择的不同进行不同的跳转:

search: function() {
  if (this.searchText) {
    this.engines.forEach(function(engine) {
      if (engine.name === '搜狗') {
        window.open(engine.searchUrl + encodeURIComponent(this.searchText));
      } else {
        location.href = engine.searchUrl + encodeURIComponent(this.searchText);
      }
    }.bind(this));
  }
}

示例2:改变自动提示的来源为百度API

调用百度API获取关键字自动提示信息,并将结果展示在页面上。需要在getSuggestions方法里修改API的URL和参数:

getSuggestions: function() {
  if (this.searchText) {
    var url = 'http://suggestion.baidu.com/su';
    var params = {
      wd: this.searchText,
      cb: 'callback'
    };
    axios.jsonp(url, {params: params})
      .then(function(response) {
        this.suggestions = response.s;
      }.bind(this))
      .catch(function(error) {
        console.log(error);
      });
  } else {
    this.suggestions = [];
  }
}

同时,修改页面结构,展示百度API返回的结果:

<ul>
  <li v-for="suggestion in suggestions">
    <a v-bind:href="'https://www.baidu.com/s?wd=' + encodeURIComponent(suggestion)" target="_blank">{{ suggestion }}</a>
  </li>
</ul>

以上就是基于Vue实现多引擎搜索及关键字提示的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于vue实现多引擎搜索及关键字提示 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue 解决数组赋值无法渲染在页面的问题

    当 Vue 绑定的数据是一个数组时,使用原生的赋值方式(例如 array[0] = newValue)并不会触发组件的重新渲染,因为 Vue 无法识别这种方式的数据变动。为了解决这种问题,需要使用 Vue 提供的特殊方法,或在代码层面做出一些调整。 下面是解决数组赋值无法渲染在页面的问题的完整攻略: 1. 使用特殊方法进行数组数据更新 Vue 提供了一些特殊…

    Vue 2023年5月28日
    00
  • Vue混合文件使用以及ref的引用实例详解

    当我们在开发 Vue 项目时,有时我们需要在多个组件中使用相同的代码块,这时就可以使用 Vue 的混合文件功能来实现代码复用。同时,我们在 Vue 组件中也经常需要对 DOM 元素进行操作,这时可以使用 ref 引用对应的 DOM 元素。下面将详细讲解 Vue 混合文件的使用以及 ref 引用的实例详解。 Vue混合文件使用 Vue 混合文件可以理解为预定义…

    Vue 2023年5月27日
    00
  • Vue报错:TypeError: Cannot create property ‘xxxx‘ on的解决

    当 Vue 报出 “TypeError: Cannot create property ‘xxxx’ on” 类型的错误时,通常是由于在组件中调用了未定义的数据或方法。这种错误的解决方案可能有很多,我们可以从以下几个方面来处理: 检查组件的数据 首先,我们需要检查组件中使用的数据,确保其已在组件中初始化或定义。如果该数据是作为组件属性传入的,则需要确保传入的…

    Vue 2023年5月27日
    00
  • VUE项目初建和常见问题总结

    VUE项目初建和常见问题总结 项目初建 1. 安装Vue脚手架 前置条件:需要已安装Node.js和npm npm是Node.js的包管理器,可以使用以下命令检查Node.js和npm是否已安装: node -v # 查看Node.js版本 npm -v # 查看npm版本 安装Vue脚手架的命令为: npm install -g @vue/cli 2. 创…

    Vue 2023年5月28日
    00
  • 在vue项目中,将juery设置为全局变量的方法

    在Vue项目中,使用jQuery需要将其设置为全局变量,下面是完整的攻略: 安装jQuery 首先,需要在项目中安装jQuery,可以使用npm或yarn进行安装。这里以npm为例: npm install jquery –save-dev 引入jQuery并设置为全局变量 在Vue项目的入口文件中(一般是main.js),需要引入jQuery并将其设置为…

    Vue 2023年5月28日
    00
  • 详解Vue CLI 3.0脚手架如何mock数据

    具体来说,要讲解如何在Vue CLI 3.0脚手架中使用mock数据,我们需要以下内容: 确定如何安装和使用Vue CLI 3.0,以及搭建本地开发环境。 介绍如何使用Mock.js模拟数据,并在Vue项目中引入。 在Vue脚手架项目中,讲解如何开启和使用webpack-dev-server的proxy功能,和结合Mock.js进行数据模拟。 通过具体的示例…

    Vue 2023年5月28日
    00
  • mpvue开发音频类小程序踩坑和建议详解

    mpvue开发音频类小程序踩坑和建议详解 1. 前言 mpvue 是一个基于 Vue.js 核心的高性能小程序开发框架。它传承了 Vue.js 的语法风格和开发习惯,在小程序开发中尽可能的减少了学习成本和上手难度。同时,mpvue 利用 Webpack 和 Vue.js 的自身特性,将组件和业务逻辑代码进行分离抽离,维护更加方便易用。 在开发小程序中,音频类…

    Vue 2023年5月27日
    00
  • Vue 中使用富文本编译器wangEditor3的方法

    下面我将为你介绍如何在Vue中使用wangEditor3富文本编辑器。 1. 安装wangEditor3 首先,在Vue项目中安装wangEditor3,可以使用npm或者yarn进行安装,打开终端输入以下命令: npm install wangEditor3 –save 或者 yarn add wangEditor3 2. 创建富文本编辑器组件 在Vue…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部