基于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日

相关文章

  • Java上传文件到服务器指定文件夹实现过程图解

    下面是Java上传文件到服务器指定文件夹的完整攻略。 步骤一:前端页面准备 在前端页面上,需要使用HTML表单将文件上传到后端,代码如下: <form action="upload" method="post" enctype="multipart/form-data"> <inp…

    Vue 2023年5月28日
    00
  • vue项目中安装less依赖的过程

    当我们在Vue项目中需要使用less预编译器作为样式开发工具时,需要安装less依赖并进行配置,下面是安装less依赖的完整攻略。 步骤1:安装less依赖 我们可以使用npm或yarn来安装less依赖,以下是两个命令示例: npm安装命令 npm install less less-loader –save-dev yarn安装命令 yarn add …

    Vue 2023年5月28日
    00
  • webpack搭建vue 项目的步骤

    下面我将介绍使用webpack搭建vue项目的步骤以及相关示例说明。 步骤一:初始化项目 首先,在本地创建一个空的文件夹,打开终端,进入该文件夹目录,执行以下命令: npm init -y 这个命令将会初始化一个Node.js 项目(-y 表示跳过初始化界面)。 步骤二:安装依赖 在项目根目录下执行以下命令安装webpack和vue相关依赖: npm i w…

    Vue 2023年5月28日
    00
  • 分享7个成为更好的Vue开发者的技巧

    分享7个成为更好的Vue开发者的技巧 作为一名Vue开发者,提高技能水平是非常重要的,下面是分享7个成为更好的Vue开发者的技巧: 1. 熟悉Vue的核心概念 Vue的核心概念包括:模板语法、组件、生命周期等,必须要熟悉和掌握它们,才能更好地开发Vue应用。 示例代码: <template> <div> <h3>{{ me…

    Vue 2023年5月27日
    00
  • 详解Vue2.X的路由管理记录之 钩子函数(切割流水线)

    标题:详解Vue2.X的路由管理记录之钩子函数(切割流水线) Vue.js是一个流行的JavaScript框架,它提供了很多功能,其中一个最重要的功能是路由管理。Vue Router是Vue.js官方提供的路由管理器。在Vue Router中,钩子函数是一个可以帮助我们控制路由导航状态的强大工具。在本文中,我们将详细讲解Vue2.X中的路由钩子函数及其用法,…

    Vue 2023年5月28日
    00
  • nuxt 页面路由配置,主页轮播组件开发操作

    下面我将为您详细讲解”nuxt页面路由配置,主页轮播组件开发操作”的完整攻略。 Nuxt 页面路由配置 在 Nuxt 中,页面路由可以通过 pages 目录下的目录和文件来进行定义。例如,一个名为 home.vue 的文件就可以对应主页的路由。 以下是一个页面路由的基本结构示例: pages/–| home.vue–| about/—–| inde…

    Vue 2023年5月28日
    00
  • Vue3中vuex的基本使用方法实例

    本文将以「Vue3中vuex的基本使用方法实例」为主题,为大家详细讲解Vue3中vuex的使用方法和操作流程。 先决条件 Vue3和Vuex是本文所需使用的前置知识,如果你还不熟悉这两个技术,你需要先掌握它们。 安装 Vuex 首先,我们需要安装 Vuex 。您可以通过运行以下命令来安装该软件包: npm install vuex@next 创建 Vuex …

    Vue 2023年5月27日
    00
  • vue实现登录时图形验证码

    下面是Vue实现登录时图形验证码的完整攻略。 1. 简介 在网站的登录界面中,为了增加用户的安全性,通常会使用图形验证码来防止机器恶意登录或者验证码破解等安全问题。Vue作为现代前端框架,可以很方便地实现图形验证码。 2. 实现步骤 2.1 安装v-charts插件 在Vue项目中使用图形验证码需要使用v-charts插件,因此需要先安装v-charts插件…

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