De nombreux sites Web ont une sorte de fonction de recherche, car elle aide les utilisateurs à naviguer facilement dans leur contenu. L'implémenter correctement peut être délicat et peut ne pas donner une bonne expérience utilisateur. Dans ce tutoriel, nous intégrerons Algolia, un service de recherche populaire et puissant pour la meilleure expérience sur notre site Nuxt.
Donner aux utilisateurs la possibilité de rechercher et de naviguer rapidement dans notre contenu présente de grands avantages. Cela améliore non seulement l'expérience utilisateur, mais augmente également la rétention des utilisateurs et augmente la conversion, car les utilisateurs peuvent désormais explorer au-delà de ce qui les a amenés sur notre site en premier lieu.
Dans ce didacticiel, nous verrons comment intégrer cela. fonctionnalité de recherche dans notre application Nuxt en utilisant Algolia. Algolia est un service tiers que nous pouvons intégrer à notre application et nous fournit un ensemble d'outils qui nous permettent de créer une expérience de recherche complète dans nos sites et applications.
Nous utiliserons Nuxt Content, "Git Based Headless CMS" qui nous permet de créer et de gérer du contenu à l'aide de fichiers Markdown, XML, JSON, etc. Nous allons créer un site Nuxt avec Nuxt Content avec une fonction de recherche utilisant Algolia InstantSearch, pour le style, nous utiliserons TailwindCSS. Ce didacticiel s'adresse aux développeurs Vue.js qui connaissent Nuxt.
Prérequis
Pour suivre ce didacticiel, vous devez avoir installé les éléments suivants :
- Node,
- Un éditeur de texte, je recommande VS Code avec l'extension Vetur (pour les fonctionnalités de syntaxe Vue.js dans VS Code),
- Un terminal, vous pouvez utiliser le terminal intégré de VS Code ou tout autre de votre choix.
Vous aurez également besoin d'une compréhension de base des éléments suivants afin de suivre en douceur :
Configuration de notre application Nuxt
Nuxt.js est un framework construit sur Vue, il possède de nombreuses fonctionnalités et fonctionnalités, notamment le rendu côté serveur (SSR).
Pour installer celui-ci, ouvrez notre terminal et exécutez :
npx create-nuxt-app
Où est le nom de notre dossier de projet, j'utiliserai
algolia-nuxt
pour ce projet.
L'exécution de la commande vous posera quelques questions (nom, options Nuxt, framework d'interface utilisateur, TypeScript, etc.). Pour en savoir plus sur toutes les options, consultez Créer l'application Nuxt.
Lorsqu'on vous demande les modules Nuxt.js, assurez-vous de sélectionner Contenu - CMS headless basé sur Git
pour installez le module nuxt/content
avec notre application Nuxt.
Après avoir sélectionné toutes vos options, l'installation peut commencer. Mes options sélectionnées ressemblent à ceci :
Après avoir installé avec succès l'application Nuxt, accédez au répertoire en exécutant cette commande :
cd algolia-nuxt
Installer le contenu Nuxt séparément
Si vous avez déjà configuré Nuxt auparavant, vous pouvez installer le module de contenu en exécutant la commande.
Ignorez ceci si vous avez déjà choisi d'installer le module nuxt/content
avec notre application Nuxt.
#install nuxt content.
npm install @nuxt/content
Ensuite, vous pouvez l'ajouter à notre propriété modules
dans notre fichier nuxt.config
.
//nuxt.config.js
exporter par défaut {
module : ['@nuxt/content']
}
Installer et configurer TailwindCSS
TailwindCSS est un premier framework CSS utilitaire qui nous fournit des classes personnalisées que nous pouvons utiliser pour styliser notre application.
Nous utiliserons également TailwindCSS Typographyqui est « un plugin qui fournit un ensemble de classes prose
que vous pouvez utiliser pour ajouter de belles valeurs typographiques par défaut à tout HTML vanille que vous ne contrôlez pas (comme le HTML rendu à partir de Markdown, ou tiré à partir d'un CMS). »
Tout d'abord, nous installons @nuxtjs/tailwindcss
qui est un module Nuxt pour l'intégration de TailwindCSS, ainsi que TailwindCSS et ses dépendances avec les pairs à l'aide de npm :
npm install - D @nuxtjs/tailwindcss tailwindcss@latest postcss@latest autoprefixer@latest
Ajoutez le module @nuxtjs/tailwindcss
à la section buildModules
de notre fichier nuxt.config.js :[19659033] // nuxt.config.js
exporter par défaut {
modules de construction : [‘@nuxtjs/tailwindcss’]
}
Créer un fichier de configuration
Ensuite, générez notre fichier tailwind.config.js
:
npx tailwindcss init
Cela créera un tailwind.config.js
à la racine de notre projet :
//tailwind.config.js
module.exports = {
purger : [],
darkMode : false, // ou 'media' ou 'class'
thème : {
se déployer: {},
},
variantes : {
se déployer: {},
},
plug-ins : [],
}
Créez un fichier tailwind.css
dans assets/css/
utilisez la directive @tailwind
pour injecter les styles de base, de composants et d'utilitaires de TailwindCSS :
/*assets/css/tailwind.css*/
@base de vent arrière ;
composants @tailwind ;
Utilitaires @tailwind;
Vous pouvez importer le fichier CSS dans nos composants ou le rendre accessible globalement en définissant les fichiers/modules/bibliothèques CSS que vous souhaitez définir globalement (inclus dans chaque page).[19659033] /* nuxt.config.js*/
// CSS global : https://go.nuxtjs.dev/config-css
css : [
// CSS file in the project
‘@/assets/css/tailwind.css’,
],
Ici, nous avons ajouté le chemin de notre fichier tailwind.css
à la liste des fichiers CSS globaux dans notre nuxt.config.js
.[19659051]Le @/
indique à Nuxt qu'il s'agit d'un chemin absolu pour rechercher le fichier à partir du répertoire racine.
Installer TailwindCSS Typography
# Using npm
npm install @tailwindcss/typography
Ensuite, ajoutez le plugin à notre fichier tailwind.config.js
:
// tailwind.config.js
module.exports = {
purger : [],
darkMode : false, // ou 'media' ou 'class'
thème : {
se déployer: {},
},
variantes : {
se déployer: {},
},
plug-ins : [
require('@tailwindcss/typography'),
],
}
Configurez TailwindCSS pour supprimer les styles inutilisés en production
Dans notre fichier tailwind.config.js
configurez l'option de purge avec les chemins d'accès à toutes nos pages et composants afin que TailwindCSS puisse secouer l'arbre styles inutilisés dans les versions de production :
// tailwind.config.js
module.exports = {
purger : [
'./components/**/*.{vue,js}',
'./layouts/**/*.vue',
'./pages/**/*.vue',
'./plugins/**/*.{js,ts}',
'./nuxt.config.{js,ts}',
],
darkMode : false, // ou 'media' ou 'class'
thème : {
se déployer: {},
},
variantes : {
se déployer: {},
},
plug-ins : [
require('@tailwindcss/typography'),
],
}
Puisque nous avons installé les packages, commençons notre application :
npm run dev
Cette commande démarre notre application Nuxt en mode développement.
Nice 🍻
Création de nos pages et articles
Créons maintenant nos articles et une page de blog pour répertorier nos articles. Mais d'abord, créons un en-tête de site et un composant de navigation pour notre site.
Création d'un en-tête de site et d'une navigation
Naviguez jusqu'à notre components/
dossier et créez un nouveau fichier siteHeader. vue
et entrez le code suivant :
Ici, dans notre
/blog
(Nous' Je vais créer la page de blog que nous créerons plus tard).
Cela fonctionne sans que nous ayons à importer les composants et à configurer nous-mêmes le routage car, par défaut, Nuxt s'occupe de l'importation des composants et du routage pour nous.
En outre, allons-y. modifier le composant par défaut . Dans components/Logo.vue
remplacez le contenu par le code suivant :
Nous pouvons maintenant ajouter notre composant siteHeader.vue
à notre site. Dans layouts/default.vue
ajoutez juste au-dessus du composant.
...
Le composant restitue la page Nuxt actuelle en fonction de l'itinéraire.
Création de notre premier article
Dans content/
qui est un dossier créé automatiquement pour le nuxt/content
créez un nouveau dossier articles/
puis un nouveau fichier dans le dossier first-blog-post.md
. Voici le fichier de notre premier article au format markdown
. Entrez le code suivant :
---
titre : Mon premier article de blog
description : Ceci est mon premier article de blog sur algolia nuxt
mots-clés : [first, lorem ipsum, Iusto]
---
## Lorem ipsum
Lorem ipsum dolor sit amet consectetur, adipisicing elit.
Assumenda dolor quisquam consequatur distinctio perferendis.
## Iusto nobis nisi
repousser magni facilis necessitatibus, enim temporibus.
- Quisquam
- assomption
- sapiente explicabo
- totam nostrum invente
La zone entourée de ---
est le YAML
Front Matter qui sera utilisé comme variable injectée personnalisée à laquelle nous accéderons dans notre modèle.[19659003]Ensuite, nous allons créer une page dynamique qui sera utilisée pour :
- Récupérer le contenu de l'article à l'aide de
asyncData
qui s'exécute avant que la page ne soit rendue. Nous avons accès à notre contenu et aux variables personnalisées injectées via le contexte en utilisant la variable$content
. Comme nous utilisons une page dynamique, nous pouvons savoir quel fichier d'article récupérer en utilisant la variableparams.slug
fournie par Vue Router pour obtenir le nom de chaque article. - Render l'article dans le modèle à l'aide de .
Ok, accédez à pages/
et créez un dossier blog/
. Créez un fichier _slug.vue
(notre page dynamique) et insérez ce qui suit :
Si vous accédez à votre navigateur et accédez à http://localhost:3000/blog/first-blog-post
vous devriez voir notre contenu rendu :
Maintenant que notre page dynamique fonctionne et que notre article est rendu, créons des doublons pour les besoins de ce didacticiel.
---
titre : Mon premier article de blog
description : Ceci est mon premier article de blog sur algolia nuxt
mots-clés : [first, Placeat amet, Iusto]
---
## Lorem ipsum
Lorem ipsum dolor sit amet consectetur, adipisicing elit.
Assumenda dolor quisquam consequatur distinctio perferendis.
## Iusto nobis nisi
repousser magni facilis necessitatibus, enim temporibus.
- Quisquam
- assomption
- sapiente explicabo
- totam nostrum inventeur
Créer une page de blog pour lister nos articles
Créons maintenant une page de blog pour lister nos articles. C'est aussi là que vivra notre barre de recherche. Créez un nouveau fichier pages/blog/index.vue
.
Ici, dans notre fonction asyncData
lors de la récupération de $content('articles')
nous chaînons .only(['title', 'slug', 'updatedAt', 'description'])
à récupérer uniquement ces attributs des articles, .sortBy('createdAt', 'asc')
pour les trier et enfin fetch()
pour récupérer les données et les affecter à const articles
que nous renvoyons ensuite.
Ainsi, dans notre nous pouvons la liste des articles et créer des liens vers eux en utilisant leur propriété
slug
.
Notre page devrait ressembler à quelque chose comme ceci :
Excellent 🍻
Installer et configurer Algolia Search et Vue-instantSearch
Maintenant que nous avons éliminé les éléments de base, nous pouvons intégrer Algolia Search à notre site de blog.
Tout d'abord, installons tous les packages dont nous aurons besoin :
#install dependencies
npm install vue-instantsearch instantsearch.css algoliasearch nuxt-content-algolia remove-markdown dotenv
vue-instantsearch
Algolia InstantSearch UI composant/bibliothèque de widgets pour Vue.instantsearch.css
Personnalisé style pour les widgets instantSearch.algoliasearch
Un client HTTP pour interagir avec Algolia.nuxt-content-algolia
Package pour indexer notre contenu et l'envoyer à Algolia.[19659008]remove-markdown
Cela supprime tous les caractères de démarque dubodyPlainText
des articles.dotenv
Cela permet de lire les variables d'environnement de.env
.
Nous utiliserons ces packages tout au long du reste de ce didacticiel, mais d'abord, configurons un compte Algolia.
Configurer un compte Algolia
Inscrivez-vous pour un compte Algolia sur https://www.algolia.com/. Vous pouvez le faire gratuitement, cependant, cela vous donnera une période d'essai de 14 jours. Étant donné que nous n'effectuons pas de tâches lourdes avec Algolia, leur niveau gratuit conviendra parfaitement à notre projet après l'expiration de la période d'essai.
Vous suivrez certaines étapes d'intégration. Après cela, une UNNAMED APP sera créée pour vous. Dans la barre latérale, sur la gauche, accédez aux les clés API qui vous seront fournies :
- ID d'application
Il s'agit de votre identifiant d'application unique. Elle sert à vous identifier lorsque vous utilisez l'API d'Algolia. - Search Only API Key
Il s'agit de la clé API publique à utiliser dans votre code frontend. Cette clé est uniquement utilisable pour les requêtes de recherche et l'envoi de données à l'API Insights. - Admin API Key
Cette clé est utilisée pour créer, mettre à jour et SUPPRIMER vos index. Vous pouvez également l'utiliser pour gérer vos clés API.
Maintenant que nous avons nos clés API, enregistrons-les dans un fichier .env
pour notre projet. Accédez au dossier racine du projet et créez un nouveau fichier .env
et entrez vos clés API :
.env
ALGOLIA_APP_ID=algolia-app-id
ALGOLIA_API_KEY=algolia-admin-api-key
Remplacez algolia-app-id
et algolia-admin-api-key
par votre ID d'application et votre clé API Admin respectivement.[19659149]Créez un index 'Articles'
pour nos articles Nuxt en Algolia
Sur votre compte Algolia, rendez-vous sur Indices et cliquez sur créer un index. Saisissez ensuite le nom de votre index et nous utiliserons articles pour ce tutoriel.
'articles'
index sur Algolia. ( Grand aperçu)Comme vous pouvez le voir, notre index 'article'
a été créé.
'articles'
créé. ( Grand aperçu)Configurez nuxt-content-algolia
pour envoyer l'index de contenu à Algolia
Nous avons créé avec succès une propriété d'index sur notre compte. Nous devons maintenant générer un index à partir de nos articles Nuxt, ce qu'Algolia utilisera pour fournir des résultats aux requêtes de recherche. C'est à cela que sert le module nuxt-content-algolia
que nous avons précédemment installé.
Nous devons le configurer dans notre nuxt.config.js
.
Tout d'abord, nous l'ajouterons à nos buildModules
:
// nuxt.config.js
...
// Modules pour dev et build (recommandé) : https://go.nuxtjs.dev/config-modules
modules de construction : ['@nuxtjs/tailwindcss', 'nuxt-content-algolia'],
...
Ensuite, nous créons un nouvel objet nuxtContentAlgolia
et y ajoutons quelques configurations :
// nuxt.config.js
exporter par défaut {
...
nuxtContentAlgolia : {
// ID d'application
appId : process.env.ALGOLIA_APP_ID,
// Clé API administrateur
// !IMPORTANT la clé secrète doit toujours être une variable d'environnement
// ce n'est pas votre seule clé de recherche mais la clé qui autorise l'accès pour modifier l'index
apiKey : process.env.ALGOLIA_ADMIN_API_KEY,
chemins : [
{
name: 'articles',
index: process.env.ALGOLIA_INDEX || 'articles',
fields: ['title', 'description', 'tags', 'bodyPlainText']
}
]
},
...
}
Le nuxtContentAlgolia
prend les propriétés suivantes :
appId
Application ID*.apiKey
Admin API Key.- [19659317]paths
Un tableau d'objets d'index. C'est là que nous définissons d'où nous voulons générer des index. Chaque objet prend les propriétés suivantes :name
Le nom du dossier dans le dossiercontent/
. En d'autres termes, nous utiliserons des fichiers danscontent/articles/
puisque nous avons défini le nom comme'articles'
.index
C'est le nom de l'index que nous avons créé sur notre tableau de bord Algolia.fields
Un tableau de champs à indexer. C'est sur quoi Algolia basera ses requêtes de recherche.
Générer bodyPlainText
à partir d'articles
Notez que dans le tableau fields
nous avons bodyPlainText
comme une de ses valeurs. Nuxt Content ne nous fournit pas un tel champ. Au lieu de cela, ce que Nuxt Content fournit est body
qui est un objet complexe qui sera rendu dans le DOM.
Afin d'obtenir notre bodyPlainText
qui est simplement tout texte, dépouillé de Markdown et les caractères HTML, nous devons utiliser un autre package, remove-markdown
.
Pour utiliser la fonction remove-markdown
nous devons utiliser Nuxt crochets
. Nous utiliserons le crochet 'content:file:beforeInsert'
qui vous permet d'ajouter des données à un document avant qu'il ne soit inséré, de supprimer la démarque et d'ajouter le texte brut généré à bodyPlainText
.
// nuxt.config.js
exporter par défaut {
...
crochets : {
'content:file:beforeInsert': (document)=>{
const removeMd = require('remove-markdown');
if(document.extension === '.md'){
document.bodyPlainText = removeMd(document.text);
}
}
},
...
}
Dans le hook 'content:file:beforeInsert'
nous obtenons le package remove-markdown
. Ensuite, nous vérifions si le fichier à insérer est un fichier de démarques. S'il s'agit d'un fichier de démarques, nous générons le texte brut en appelant removeMd
qui prend document.text
— le texte de notre contenu, comme argument, que nous affectons à un nouveau [Propriétédocument.bodyPlainText
. La propriété sera désormais disponible pour une utilisation via Nuxt Content.
BodyPlainText
générée et visible dans Nuxt. ( Grand aperçu)Super ! Maintenant que c'est fait, nous pouvons générer l'index et l'envoyer à Algolia.
Confirmer l'index Algolia
D'accord. Nous avons configuré nuxt-content-algolia
et nous avons généré bodyPlainText
pour nos articles. Nous pouvons maintenant générer cet index et envoyer les données à Algolia en construisant notre projet en utilisant nuxt generate
.
npm run generate
Cela va commencer à construire notre projet pour la production et exécuter le nuxtContentAlgolia
config. Lorsque nous regardons notre terminal après la construction, nous devrions voir que notre contenu a été indexé et envoyé à Algolia.
Pour vérifier, vous pouvez accéder à votre tableau de bord Algolia :
Ouvrez Indicespuis accédez à Search API logsoù vous verrez un journal des opérations effectuées avec votre Search API . Vous pouvez maintenant ouvrir et vérifier l'appel d'API envoyé depuis votre projet Nuxt. Cela devrait avoir le contenu de votre article tel que spécifié dans la section fields
de la configuration de nuxtContentAlgolia
.
Bien ! 🍻
Création de l'interface utilisateur de recherche
Jusqu'à présent, nous avons pu générer et envoyer des données d'indexation à Algolia, ce qui signifie que nous sommes en mesure d'interroger ces données pour obtenir des résultats de recherche.
Pour le faire dans notre app, nous devons créer notre interface utilisateur de recherche.
Vue-InstantSearch
fournit de nombreux composants d'interface utilisateur utilisant Algolia qui peuvent être intégrés pour offrir une expérience de recherche riche aux utilisateurs. Configurons-le.
Créer et configurer le plugin vue-instantSearch
Pour utiliser les widgets Algolia InstantSearch
dans notre application Nuxt, nous devrons créer un plugin dans notre dossier plugins
.
Allez dans plugins/
et créez un nouveau fichier vue-instantsearch.js
.
//plugins/vue- recherche instantanée.js
importer Vue depuis 'vue'
importer InstantSearch depuis 'vue-instantsearch'
Vue.use(InstantSearch)
Ici, nous importons simplement InstantSearch
et l'utilisons sur le frontend Vue
.
Maintenant, nous devons ajouter le vue-instantSearch
à nos plugins et options de build dans nuxt.config.js
afin de le transpiler vers Vue.js.
Alors, passez à nuxt.config. js
et ajoutez ce qui suit :
// nuxt.config.js
exporter par défaut {
...
// Plugins à exécuter avant le rendu de la page : https://go.nuxtjs.dev/config-plugins
plug-ins : ['@/plugins/vue-instantsearch.js'],
// Configuration de la construction : https://nuxtjs.org/docs/2.x/configuration-glossary/configuration-build#transpile
construire: {
transpiler : ['vue-instantsearch', 'instantsearch.js/es']
}
...
Le code }
InstantSearch
utilise des modules ES, mais il doit être exécuté dans Node.js
. C'est pourquoi nous devons informer Nuxt que ces fichiers doivent être transpilés pendant la construction.
Maintenant que nous avons configuré notre plugin vue-instantSearch
créons un composant de recherche.
Créez un composant de recherche
Créez un nouveau fichier components/Search.vue
.
Comme nous avons installé vue-instantSearch
en tant que plugin, nous pouvons l'utiliser dans nos composants Vue.
...
Tout d'abord, dans la section nous importons algoliaSearch
et instantsearch.css
.
Ensuite, nous fournissons les informations d'identification pour notre recherche Algolia qui sont :
- Application ID,
- Search API key.
algoliaSearch
puis affectez-la à searchClient
que nous utiliserons dans notre
pour configurer nos widgets de recherche Algolia.
ais-instant-search
Widget
ais-instant-search
est la racine Vue [19459033Composant]InstantSearch. Tous les autres widgets doivent être encapsulés avec le composant racine pour fonctionner. Les attributs requis pour ce composant sont :
index-name
Nom de l'index à interroger, dans ce cas, ce seraitarticles
.search- client
algoliaSearch
objet contenant l'ID d'application et la clé d'API de recherche.
...
ais-configure
Widget
Le widget ais-configure
aide à configurer la fonctionnalité de recherche en envoyant des paramètres définis à Algolia.
Tous les accessoires que vous ajoutez à ce widget seront transmis à Algolia. Pour plus d'informations sur les différents paramètres que vous pouvez définir, consultez la référence API des paramètres de recherche.
Les paramètres que nous allons définir pour le moment seront :
attributesToSnippet[19659123]Le nom de l'attribut ou le
champ
à extraire, nous en verrons bientôt plus à ce sujet.hits-per-page.camel
Nombre de résultats dans une page.snippetEllipsisText="…"
Ensemble...
avant et après le texte coupé.
...
ais-autocomplete
Widget
Ce widget est essentiellement un wrapper qui nous permet de créer un résultat de recherche qui complète automatiquement la requête. Dans ce widget, nous pouvons nous connecter à d'autres widgets pour fournir une interface utilisateur plus riche et accéder à plusieurs index.
...
Ainsi, dans notre widget ais-autocomplete
nous faisons quelques choses :
- Remplacer la sortie DOM de le widget en utilisant l'emplacement
default
. Nous le faisons en utilisant les étendues :currentRefinement : string
: la valeur actuelle de la requête.indices : object[]
: la liste des indices.refine : (string) = > void
: la fonction pour modifier la requête.
...
- Créez une recherche
à retenir, modifiez la requête et la valeur du
currentRefinement
.
...
...
- Afficher les résultats de la recherche pour chaque index. Chaque index a les propriétés suivantes :
indexName : string
: le nom de l'index.indexId : string
: l'id de l'index.hits : object[]
: les résultats résolus de l'index correspondant à la requête.
...
- Ensuite, affichez les résultats —
hits
.
...
-
...
Voici ce que nous utilisons :
- Widget pour mettre en évidence la partie du résultat qui correspond directement à la requête du champ passé au
attribute
prop. - Widget pour afficher la section appropriée de l'attribut extrait et le mettre en surbrillance. Nous avons défini l'
attribut
dansattributesToSnippet
dans .
Stylisation de notre composant de recherche
InstantSearch est fourni avec des styles par défaut que nous avons inclus dans notre projet à l'aide du packageinstantsearch.css
. Cependant, nous devrons peut-être modifier ou ajouter des styles à nos composants pour les adapter au site que nous construisons.
Les classes CSS avec de nombreux widgets peuvent être écrasées à l'aide de la propriété class-names
. Par exemple, nous pouvons modifier le style en surbrillance de .
...
...
Et dans notre CSS :
...
...
Nous voyons que la classe que nous avons définie a été appliquée à la surbrillance.
...
Très bien, le style est terminé et j'ai inclus un pour accéder à l'article en cliquant.
Nous avons maintenant quelque chose comme ceci :
Configuration d'InstantSearch pour le rendu côté serveur (SSR)
Notre composant de recherche est maintenant opérationnel, mais il ne s'affiche que côté client, ce qui signifie que nous devons attendre que le composant de recherche se charge même après le chargements de pages. Nous pouvons encore améliorer les performances de notre site en le rendant côté serveur. Selon Algoliales étapes de mise en œuvre du rendu côté serveur sont : Sur le serveur :[19659091]Faites une demande à Algolia pour obtenir les résultats de la recherche.- Lisez les résultats de la recherche à partir de la page.
- Rendez (ou hydratez) l'application Vue avec les résultats de la recherche.
Utilisation de Mixins, serverPreFetch
beforeMount
Suite à la documentation d'Algolia sur l'implémentation du SSR avec Nuxt, nous devons apporter les modifications suivantes :
...
We’re simply doing the following:
createServerRootMixin
to create a reusable search instance;findResultsState
inserverPrefetch
to perform a search query on the back end;hydrate
method inbeforeMount
.
Then in our ,
...
...
...
Here, we to replace ais-instant-search
with ais-instant-search-ssr
.
Conclusion
We’ve successfully built a Nuxt site with some content handled by Nuxt Content and integrated a simple Algolia search into our site. We’ve also managed to optimize it for SSR. I have a link to the source code of the project in this tutorial and a demo site deployed on Netlify, the links are down below.
We have tons of options available to customize and provide a rich search experience now that the basics are out of the way. The Algolia widgets showcase is a great way to explore those options and widgets. You’ll also find more information on the widgets used in this tutorial.
GitHub Source Code
Further Reading
Here are some links that I think you will find useful:
Source link