Maison > Périphériques technologiques > Industrie informatique > Pirater un composant de routage dans Jekyll

Pirater un composant de routage dans Jekyll

Lisa Kudrow
Libérer: 2025-02-20 09:10:09
original
198 Les gens l'ont consulté

Hacking a Routing Component in Jekyll

Pirater un composant de routage dans Jekyll

Les plats clés

  • Jekyll n'a pas de composant de routage intégré, ce qui peut être problématique lorsque les URL doivent être modifiées et que tous les liens vers l'ancienne URL doivent être mis à jour manuellement. Une solution de solution de contournement peut être créée à l'aide du liquide et de la marque, idéale pour les sites hébergés sur des pages GitHub où les plugins et le code rubis personnalisé ne peuvent pas être utilisés.
  • Un routeur peut être créé dans Jekyll en mappant des URL vers des noms (routes) dans un fichier YAML stocké dans le dossier _data. Cela permet de modifier les URL sans avoir à mettre à jour tous les liens pointant vers l'ancienne URL, car les liens se réfèrent désormais au nom de l'itinéraire plutôt qu'au chemin d'URL.
  • Pour rendre le routeur plus convivial, les références de liaison Markdown peuvent être autoogénérées à partir du routeur, ce qui permet d'utiliser les itinéraires comme références dans n'importe quel fichier. Cela se fait en créant un partiel liquide qui boucle à travers tous les itinéraires et crée une référence Markdown pour chacun.
  • Bien que cette solution fournit un routeur fonctionnel dans Jekyll, il y a certaines limites. Il ne fonctionne que dans Markdown, pas un HTML simple, et les ancres ne peuvent pas être ajoutées au lien. De plus, le partiel HTML doit être inclus dans toutes les pages, ce qui peut être fastidieux. Malgré ces inconvénients, cette solution de contournement fournit une solution viable à l'absence d'un composant de routage dans Jekyll.

Au début, j'allais titre cet article pirater un composant de routage dans Jekyll lorsqu'il est hébergé sur les pages GitHub avec Markdown, Liquid et Yaml . Évidemment, c'est un peu long, donc j'ai dû le raccourcir. Quoi qu'il en soit, le point ne change pas: Jekyll n'a pas une sorte de routeur, et je pense que j'ai trouvé une solution pas si terrible pour imiter une.

mais les premières choses d'abord: je viens d'un fond syfony, donc par router Je veux dire un composant qui mappe URL aux noms - a.k.a. routes - afin que vous puissiez changer en toute sécurité une URL sans avoir à ramper votre base de code pour mettre à jour tous les liens se dirigeant vers l'emplacement obsolète.

Pourquoi aurions-nous besoin d'une telle chose?

Je travaille actuellement dur sur les documents de Sassdoc V2 (non encore publié, au moment de la rédaction de cet article). Nous avons pas mal de contenu; Plus de 20 pages se divisent sur 4 sections différentes contenant de nombreux exemples de code et références croisées.

à quelques reprises lors de la réécriture, je voulais changer une URL. Le problème est que lorsque je change une URL, je dois mettre à jour tous les liens qui se dirigent vers cette URL si je ne veux pas qu'ils soient brisés. Ramper plus de 20 pages pour s'assurer que toutes les URL sont bien est loin d'être idéale…

C'est pourquoi nous avons besoin d'un composant de routage. Ensuite, nous référerions les URL par leur nom plutôt que par leur chemin, nous permettant de changer un chemin tout en gardant le nom parfaitement valide.

Comment ça marche?

Alors, de quoi avons-nous besoin pour que cela fonctionne? Si vous exécutez Jekyll mais que vous ne vous limitez pas au mode sûr (ce qui est malheureusement le cas lorsque vous utilisez des pages GitHub pour l'hébergement), vous pouvez sûrement trouver / créer un plugin Ruby pour le faire. Ce serait la meilleure solution car c'est généralement quelque chose géré par un langage côté serveur.

Maintenant, si vous hébergez votre site sur les pages GitHub, ce qui est le plus souvent le cas qu'avec Jekyll, vous ne pouvez pas utiliser les plugins et vous ne pouvez pas étendre le noyau de Jekyll avec du code rubis personnalisé, vous finissez donc par pirater une solution avec ce qui est disponible: Liquide et marquage.

L'idée principale est d'avoir un fichier contenant tous nos itinéraires mappés sur des URL réelles. Heureusement, Jekyll nous permet de définir des variables globales personnalisées via des fichiers YAML / JSON / CSV stockés dans le dossier _data, accessible plus tard via Site.Data. . Ainsi, nous pouvons accéder à ces URL directement dans nos pages à partir de leur nom.

Pour ajouter un peu de sucre syntaxique sur le dessus, nous allons créer des références de lien de marque qui permettront une syntaxe plus conviviale - mais n'allons pas trop vite trop rapidement.

Création du routeur

Le point du routeur est d'exposer les routes (a.k.a. noms ) mappés sur les URL (un à un). Il est possible de créer des fichiers YAML / JSON / CSV dans le dossier _data de tout projet Jekyll, alors allons avec un fichier YAML nommé Routes.yml:

home: "/"
about: "/about-us/"
faq: "/frequently-asked-questions/"
repository: "https://github.com/user/repository"
Copier après la connexion
Copier après la connexion

Vous avez peut-être noté que nous ne sommes bien sûr pas limités aux liens internes. Nous pouvons totalement définir des itinéraires pour les URL externes afin d'éviter de les taper encore et encore s'ils ont tendance à apparaître régulièrement. Dans le même sens, nous nous sommes arrêtés à 4 itinéraires pour notre exemple, mais le routeur pourrait contenir des centaines de itinéraires.

Parce que le fichier est en _data, nous pouvons accéder à son contenu à peu près n'importe où avec Site.data. . . Disons donc que nous avons une page contenant le code suivant:

---
layout: default
title: "About us"
---

<span><!-- Content about us -->
</span>
Go to our [GitHub repository]({{ site.data.routes.repository }}).
Or read the section dedicated to [Frequently Asked Questions]({{ site.data.routes.faq }}).
Copier après la connexion
Copier après la connexion

Comme vous pouvez le voir, nous ne nous référons plus aux URL, mais les routes à la place. Ce n'est pas magique, il dit seulement à Jekyll d'accéder aux variables globales stockées sur le chemin donné (par exemple site.data.routes.faq).

Maintenant, si le référentiel n'est plus hébergé sur GitHub ou l'URL de la page "About Us" est maintenant / à propos /, ne vous inquiétez pas! En mettant à jour le routeur, nous le faisons fonctionner sans avoir à revenir sur nos pages pour mettre à jour nos liens.

ajoutant du sucre syntaxique

À ce stade, nous avons un routeur fonctionnel nous permettant de modifier une URL sans avoir à ramper notre site pour corriger les liens cassés. Vous pouvez donc dire que c'est déjà assez cool. Cependant, devoir taper site.data.routes.faq n'est pas très pratique. Nous pourrions sûrement le rendre un peu plus élégant!

oui et non. Au début, j'ai pensé à construire une petite fonction () en acceptant un nom de clé et en renvoyant la valeur stockée sur site.data.routes. . Le problème est que nous exécutons Jekyll en mode sans échec, nous ne pouvons donc pas l'étendre avec Ruby Code. Pas de chance.

Ensuite, j'ai pensé à une fonctionnalité Markdown que je n'ai jamais utilisée auparavant: références de liaison. C'est ainsi qu'un lien est représenté dans Markdown:

home: "/"
about: "/about-us/"
faq: "/frequently-asked-questions/"
repository: "https://github.com/user/repository"
Copier après la connexion
Copier après la connexion

Vous pouvez également définir le lien pour se diriger vers une référence - qui est complètement invisible au fait, définie n'importe où dans la page, comme ainsi:

---
layout: default
title: "About us"
---

<span><!-- Content about us -->
</span>
Go to our [GitHub repository]({{ site.data.routes.repository }}).
Or read the section dedicated to [Frequently Asked Questions]({{ site.data.routes.faq }}).
Copier après la connexion
Copier après la connexion

Remarque: Les parenthèses sont remplacées par des supports lors de l'utilisation d'une référence plutôt que d'une URL.

Cela pourrait vous permettre d'avoir tous vos liens définis au même endroit (en bas par exemple) plutôt que partout dans le document. Je dois dire que je n'ai pas beaucoup utilisé cette fonctionnalité, mais dans ce cas, il est utile.

L'idée est de les références de liaison automatiquement de notre routeur afin que nous puissions utiliser nos itinéraires comme référence dans n'importe quel fichier. Il se révèle étonnamment facile de le faire en liquide:

[I am a link](http://link.url/)
Copier après la connexion

En ajoutant ceci pour la boucle n'importe où dans la page, cela demande à Jekyll de le traiter comme du code liquide, qui sera ensuite traité comme des références de marque. Ainsi, par exemple, et revenant à notre exemple précédent, nous pourrions faire:

[I am a link][id_reference]

​[id_reference]: http://link.url
Copier après la connexion

Maintenant, nous parlons, non? Le seul problème est d'avoir à inclure cette boucle dans n'importe quelle page. Au début, j'ai pensé à l'ajouter dans la mise en page, donc il est automatiquement ajouté à n'importe quelle page en utilisant la disposition pertinente. Le problème est que les dispositions ne sont pas traitées comme Markdown dans Jekyll, donc les références sont réellement visibles au bas du DOM. Pire encore, ils ne sont pas utilisables dans nos pages car ils n'ont pas été traités comme Markdown… trop mal.

Cependant, nous pouvons toujours faire quelque chose pour le rendre légèrement meilleur. Nous pouvons mettre cette boucle dans un partiel liquide et inclure le partiel dans chaque page plutôt que de copier la boucle. Disons que nous créons un itoutes.html partiel dans le dossier _includes:

# _includes/route.html
{% for route in site.data.routes %}
[{{ route[0] }}]: {{ route[1] }}
{% endfor %}
Copier après la connexion

Et puis, dans notre page:

---
layout: default
title: "About us"
---

<span><!-- Content about us -->
</span>
Go to our [GitHub repository][repository].
Or read the section dedicated to [Frequently Asked Questions][faq].

{% for route in site.data.routes %}
[{{ route[0] }}]: {{ route[1] }}
{% endfor %}
Copier après la connexion

Remarque: vous pouvez inclure le partiel n'importe où dans la page, pas seulement en haut. Vous pouvez le dire totalement comme la toute dernière ligne du fichier.

Réflexions finales

C'est les gens, nous avons piraté un petit composant de routage en mode de sécurité Jekyll. Maintenant, quels sont les inconvénients de cela? Il y en a quelques mineurs:

  • Cela fonctionne dans Markdown; Si vous avez un lien en html simple, vous devez retomber à {{site.data.routes. }}, qui n'est pas trop mal car il garde toujours des liens à l'abri des mises à jour d'URL.
  • Vous ne pouvez pas ajouter une ancre au lien; Si vous en avez besoin, retombez à {{Site
  • Vous devez inclure le partiel HTML dans toutes les pages, ce qui peut être fastidieux (même si vous considérez cela comme une extension du front YAML, vous devez quand même écrire).
Mis à part ces inconvénients, tout est bon et brillant. Que pensez-vous?

Questions fréquemment posées (FAQ) sur le piratage du composant de routage dans Jekyll

Quelle est la signification de la composante de routage dans Jekyll?

Le composant de routage de Jekyll est crucial car il détermine la structure des URL de votre site. Il est responsable de la cartographie de chaque page à une URL spécifique, ce qui est essentiel pour la navigation du site et le référencement. En piratant le composant de routage, vous pouvez personnaliser la structure URL de votre site en fonction de vos besoins spécifiques, améliorant l'expérience utilisateur et la visibilité des moteurs de recherche.

Comment puis-je personnaliser la structure URL dans Jekyll?

Jekyllll Vous permet de personnaliser votre structure URL grâce à l'utilisation des permaliens. Vous pouvez spécifier un permalien personnalisé dans la matière frontale de votre message, qui remplacera la structure d'URL par défaut. Cela vous permet de créer des URL plus descriptives et conviviales, qui peuvent améliorer l'expérience de référencement et d'utilisateur de votre site.

Quels sont les avantages de l'utilisation de Jekyll pour mon site Web?

Jekyll est un simple , Générateur de sites statique, parfait pour les sites personnels, de projet ou d'organisation. Il est incroyablement flexible et prend en charge les structures, les thèmes, les plugins, les plugins, etc. De plus, parce qu'il génère des sites statiques, il est incroyablement rapide et sécurisé par rapport aux plates-formes CMS traditionnelles.

Comment puis-je déployer mon site Jekyll sur une plate-forme tiers?

Jekyll prend en charge une large gamme des plates-formes de déploiement tierces, y compris les pages GitHub, Netlify, etc. Pour déployer votre site, vous devrez le construire localement, puis appuyez sur les fichiers statiques générés vers la plate-forme choisie. Chaque plate-forme a son propre processus de déploiement spécifique, alors assurez-vous de vérifier leur documentation pour des instructions détaillées.

Quels sont les exemples de sites Web construits avec Jekyll?

Il existe de nombreux sites Web impressionnants conçus avec Jekyll , allant des blogs personnels aux grands sites d'organisation. Certains exemples incluent le site Web officiel de Jekyll, les pages GitHub et bien d'autres. Vous pouvez trouver une vitrine de sites Web Jekyll sur le site officiel de Jekyll.

Comment puis-je utiliser CloudFlare pour déployer mon site Jekyll?

CloudFlare Pages est une plate-forme Jamstack pour les développeurs Frontend pour collaborer et déployer Sites Web. Il est très compatible avec Jekyll et offre un processus de déploiement simple et rationalisé. Vous pouvez connecter votre référentiel GitHub aux pages CloudFlare, puis il construire et déployer automatiquement votre site chaque fois que vous appuyez sur votre référentiel.

Quelles sont les ressources pour en savoir plus sur Jekyll?

L'officiel Le site Web Jekyll est une excellente ressource pour en savoir plus sur Jekyll. Il propose une documentation complète, des tutoriels et une vitrine de sites Web Jekyll. De plus, de nombreuses ressources communautaires sont disponibles, y compris des forums, des blogs et des référentiels GitHub.

Comment puis-je ajouter des plugins à mon site Jekyll?

Jekyll prend en charge une large gamme de plugins qui peuvent ajouter de nouvelles fonctionnalités et fonctionnalités à votre site. Pour ajouter un plugin, vous devrez l'installer, puis l'ajouter au fichier _config.yml de votre site. Certains plugins peuvent également nécessiter une configuration supplémentaire, alors assurez-vous de vérifier la documentation du plugin pour des instructions détaillées.

Puis-je utiliser Jekyll avec d'autres langages de programmation?

Jekyll est construit avec Ruby, mais il peut être utilisé avec d'autres langages de programmation grâce à l'utilisation de plugins et d'intégations. Par exemple, vous pouvez utiliser Jekyll avec JavaScript pour ajouter des fonctionnalités dynamiques à votre site, ou avec des préprocesseurs CSS comme SASS pour rationaliser votre processus de style.

Comment puis-je optimiser mon site Jekyll pour SEO?

Jekyll propose plusieurs fonctionnalités qui peuvent vous aider à optimiser votre site pour le référencement. Cela inclut les structures d'URL personnalisées, la prise en charge des balises Meta et la possibilité de générer un plan du site XML. De plus, comme Jekyll génère des sites statiques, il est incroyablement rapide, ce qui peut améliorer les classements des moteurs de recherche de votre site.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal