AlgoliaInstantSearchとVue.jsの統合
検索を正しく行うのは難しい場合があります。 リアルタイムの結果をクライアントに配信したいのですが、そのためには、トリッキーなサーバー設定と大量のデータベースアクセス、または検索専用のサーバーが必要です。または、検索に使用するすべてのものを検索前にクライアントにアップロードします…または、 AlgoliaInstantSearchを使用することもできます。 (いいえ、これは何でもありません。)これは、インデックスを作成するデータをサーバーにプッシュできるホスト型ソリューションです。 そこから、非常にシンプルなコンポーネントを使用して、Vue.jsアプリにリアルタイム検索を追加できます。
見てみましょう。
入門
vue-cliとwebpack-simpleテンプレートを使用して単純なVueプロジェクトを開始します。
次に、vue-instantsearch
をインストールします。
# Yarn $ yarn add vue-instantsearch # NPM $ npm install vue-instantsearch --save
設定
次に、main.js
でプラグインを有効にします。 とてもシンプルです。
main.js
import Vue from 'vue'; import App from './App.vue'; import InstantSearch from 'vue-instantsearch'; Vue.use(InstantSearch); new Vue({ template: '<router-view></router-view>' }) .$mount('#app');
検索の追加
App.vue
に、アルゴリアの最も基本的な設定を使用して検索するセクションを追加しましょう。
vue-instantsearch
は、子供たちにデータと機能を提供する仮想コンポーネントで「実際の」レンダリング可能なコンポーネントをラップする、reactスタイルのラッパーコンポーネントを使用します。
最初に必要なのはais-index
です。 これにより、AlgoliaInstantSearchが結果を見つけるために必要な接続情報が提供されます。 アカウントを設定してインデックスを作成している場合は、Algoliaダッシュボードでapp-id
、api-key
、index-name
を見つけることができます。 今のところ、提供されたデモ資格情報を使用します。
次のコンポーネントはais-search-box
です。 それは(驚きの)検索ボックスをレンダリングします。 (さらに、ちょっとした検索とクリアボタン。)
続いて、ais-results
コンポーネントがあります。 これは少し面白いです。 スコープスロットを使用して、レンダリングする独自の検索結果テンプレートを提供できるようにします。 つまり、検索結果に画像のURLがある場合は、img
タグを挿入して、srcプロパティを設定し、画像を使用して検索結果をブームすることができます。
ここでの最後のコンポーネントはais-highlight
です。 結果オブジェクトの特定のプロパティ(attribute-name
で指定)の一致した部分を<em></em>
タグでラップします。 (カスタマイズ可能です。)つまり、Something
を検索し、結果オブジェクトが次のようになっている場合、
{ "name": "The Book of Something" }
結果の出力は次のようになります:<p>The book of <em>something</em><p>
。 ハイライトは手動で実装するのにイライラする機能なので、すぐにサポートできるのは素晴らしいことです。
App.vue
<template> <div id="app"> <img src="./assets/logo.png"> <h1>{{ msg }}</h1> <h2>Essential Links</h2> <ul> <li><a href="https://vuejs.org" target="_blank">Core Docs</a></li> <li><a href="https://forum.vuejs.org" target="_blank">Forum</a></li> <li><a href="https://chat.vuejs.org" target="_blank">Community Chat</a></li> <li><a href="https://twitter.com/vuejs" target="_blank">Twitter</a></li> </ul> <h2>Ecosystem</h2> <ul> <li><a href="http://router.vuejs.org/" target="_blank">vue-router</a></li> <li><a href="http://vuex.vuejs.org/" target="_blank">vuex</a></li> <li><a href="http://vue-loader.vuejs.org/" target="_blank">vue-loader</a></li> <li><a href="https://github.com/vuejs/awesome-vue" target="_blank">awesome-vue</a></li> </ul> <h2>Search For Stuff</h2> <ais-index app-id="latency" api-key="3d9875e51fbd20c7754e65422f7ce5e1" index-name="bestbuy" > <ais-search-box></ais-search-box> <ais-results> <template slot-scope="{ result }"> <p> <ais-highlight :result="result" attribute-name="name"></ais-highlight> </p> </template> </ais-results> </ais-index> </div> </template> ...
あなたがそれをしたら、あなたは終了するはずです! 開発サーバーを起動し、検索ボックスに何かを入力すると、結果がほぼ瞬時にレンダリングされるのを確認できます。
あとは、APIキーを自分の所有するものに切り替えるだけです。他の利用可能なコンポーネントのいくつかを試してみてください、スタイルを設定してください、カスタムコンポーネントを作成してください、楽しんでね!