Heim > Technologie-Peripheriegeräte > IT Industrie > Hacken einer Routing -Komponente in Jekyll

Hacken einer Routing -Komponente in Jekyll

Lisa Kudrow
Freigeben: 2025-02-20 09:10:09
Original
198 Leute haben es durchsucht

Hacking a Routing Component in Jekyll

Hacken einer Routing -Komponente in Jekyll

Key Takeaways

  • Jekyll fehlt eine integrierte Routing-Komponente, die problematisch sein kann, wenn URLs geändert werden müssen und alle Links zur alten URL manuell aktualisiert werden müssen. Eine Problemumgehunglösung kann mit Flüssigkeit und Markdown erstellt werden, ideal für Standorte, die auf Github -Seiten gehostet werden, auf denen Plugins und benutzerdefinierte Ruby -Code nicht verwendet werden können.
  • Ein Router kann in Jekyll erstellt werden, indem URLs auf Namen (Routen) in einer YAML -Datei abgebildet werden, die im Ordner _data gespeichert ist. Auf diese Weise können URLs geändert werden, ohne alle Links auf die alte URL zu aktualisieren, da sich die Links jetzt eher auf den Routennamen als auf den URL -Pfad beziehen.
  • Um den Router benutzerfreundlicher zu gestalten, können Markdown-Link-Referenzen aus dem Router autogeneriert werden, sodass Routen als Referenzen in jeder Datei verwendet werden können. Dies geschieht durch Erstellen eines flüssigen Teils, der alle Routen durchschlägt und für jeden eine Markdown -Referenz erstellt.
  • Während diese Lösung einen funktionalen Router in Jekyll liefert, gibt es einige Einschränkungen. Es funktioniert nur in Markdown, nicht in einfachem HTML, und Anker können nicht zum Link hinzugefügt werden. Darüber hinaus muss das HTML -Teil auf allen Seiten enthalten sein, was mühsam sein kann. Trotz dieser Nachteile bietet diese Problemumgehung eine praktikable Lösung für das Fehlen einer Routing -Komponente in Jekyll.

zunächst wollte ich diesen Artikel eine Routing -Komponente in Jekyll hacken, wenn ich auf Github -Seiten mit Markdown, Flüssigkeit und Yaml gehostet wurde. Offensichtlich ist das ein bisschen lang, also musste ich es verkürzen. Wie auch immer, der Punkt ändert sich nicht: Jekyll fehlt eine Art Router, und ich denke, ich habe eine nicht so totenfische -Lösung gefunden, um eine nachzuahmen.

Aber das erste Dinge zuerst: Ich komme aus einem Symfony -Hintergrund, also meine ich eine Komponente, die URLs auf Namen ordnet - a.k.a.

Routen - so können Sie sicher eine URL ändern Ohne Ihre Codebasis kriechen zu müssen, um alle Links auf den Weg zum veralteten Speicherort zu aktualisieren. Warum sollten wir so etwas brauchen?

Ich arbeite derzeit hart an den Dokumenten für Sassdoc v2 (noch nicht veröffentlicht, als dieses Schreiben). Wir haben ziemlich viel Inhalt; Über 20 Seiten über 4 verschiedene Abschnitte aufgeteilt, die viele Code -Beispiele und Kreuzreferenzen enthalten.

Ein paar Mal während des Umschreibens wollte ich eine URL ändern. Das Problem ist, wenn ich eine URL ändere, muss ich alle Links auf diese URL aktualisieren, wenn ich nicht möchte, dass sie kaputt sind. Über 20 Seiten kriechen, um sicherzustellen, dass alle URLs in Ordnung sind, alles andere als ideal…

Deshalb brauchen wir eine Routing -Komponente. Dann beziehen wir uns eher auf URLs mit Namen als auf ihrem Weg, sodass wir einen Pfad ändern und gleichzeitig den Namen vollkommen gültig halten können.

Wie funktioniert es?

Was müssen wir diese Arbeit machen? Wenn Sie Jekyll ausführen, aber nicht auf den abgesicherten Modus beschränkt sind (was bei Verwendung von Github -Seiten zum Hosting leider der Fall ist), können Sie sicherlich ein Ruby -Plugin finden/bauen. Dies wäre die beste Lösung, da dies normalerweise etwas ist, das von einer serverseitigen Sprache behandelt wird.

Wenn Sie Ihre Website nun auf Github -Seiten hosten, ist dies häufiger der Fall als nicht bei Jekyll, und können Sie keine Plugins verwenden, noch können Sie den Kern von Jekyll mit benutzerdefiniertem Ruby -Code erweitern. Flüssigkeit und Markdown.

Die Hauptidee besteht darin, eine Datei zu haben, die alle unsere Routen enthält, die den tatsächlichen URLs zugeordnet sind. Zum Glück ermöglicht es uns mit Jekyll, benutzerdefinierte globale Variablen über YAML/JSON/CSV -Dateien zu definieren, die im _data -Ordner gespeichert sind und später über Site.Data. zugegriffen werden. So können wir auf diese URLs direkt auf unseren Seiten aus ihrem Namen zugreifen.

Um ein wenig syntaktischer Zucker hinauf hinzuzufügen, erstellen wir Markdown -Link -Referenzen, die eine freundlichere Syntax ermöglichen - aber gehen wir nicht zu schnell.

Erstellen des Routers

Der Punkt des Routers besteht darin, Routen (a.k.a. Namen ) aufzuteilen, die auf URLs (eins zu eins) zugeordnet sind. Es ist möglich, YAML/JSON/CSV -Dateien im Ordner _data eines Jekyll -Projekts zu erstellen. Lassen Sie uns also mit einer YAML -Datei mit dem Namen Routes.yml:

entscheiden
home: "/"
about: "/about-us/"
faq: "/frequently-asked-questions/"
repository: "https://github.com/user/repository"
Nach dem Login kopieren
Nach dem Login kopieren

Sie haben vielleicht festgestellt, dass wir natürlich nicht auf interne Links beschränkt sind. Wir können Routen für externe URLs vollständig definieren, um sie immer wieder einzugeben, wenn sie regelmäßig auftauchen. In der gleichen Weise hielten wir für unser Beispiel auf 4 Routen an, aber der Router könnte Hunderte von Routen enthalten.

Da sich die Datei in _data befindet, können wir auf ihren Inhalt so ziemlich überall mit Site.data zugreifen. . . Nehmen wir also an, wir haben eine Seite, die den folgenden Code enthält:

---
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 }}).
Nach dem Login kopieren
Nach dem Login kopieren

Wie Sie sehen, beziehen wir uns nicht mehr auf URLs, sondern auf Routen. Dies ist keine Magie, sondern sagt Jekyll nur, auf globale Variablen zuzugreifen, die am angegebenen Pfad gespeichert sind (z. B. Site.data.Routes.faq).

Wenn das Repository nun nicht mehr auf GitHub oder die URL der Seite "Über uns" gehostet wird, ist die URL jetzt /über /keine Sorge! Durch die Aktualisierung des Routers lassen wir es funktionieren, ohne auf unsere Seiten zurückzukehren, um unsere Links zu aktualisieren.

Hinzufügen von syntaktischer Zucker

Zu diesem Zeitpunkt haben wir einen funktionalen Router, mit dem wir jede URL ändern können, ohne unsere Website zu kriechen, um defekte Links zu beheben. Sie können also sagen, dass es schon ziemlich cool ist. Es ist jedoch nicht sehr bequem, Site einzugeben.Data.routes.faq. Wir könnten es sicherlich ein bisschen eleganter machen!

Ja und nein. Zunächst dachte ich daran, eine kleine Route () -Funktion zu erstellen, um einen Schlüsselnamen zu akzeptieren und den Wert zurückzugeben. Das Problem ist, dass wir Jekyll im abgesicherten Modus ausführen, sodass wir es nicht mit Ruby -Code erweitern können. Kein Glück.

Dann dachte ich an eine Markdown -Funktion, die ich noch nie verwendet habe: Link Referenzen. So wird ein Link in Markdown dargestellt:

home: "/"
about: "/about-us/"
faq: "/frequently-asked-questions/"
repository: "https://github.com/user/repository"
Nach dem Login kopieren
Nach dem Login kopieren

Sie können auch den Link auf eine Referenz einstellen - was übrigens völlig unsichtbar ist, überall auf der Seite definiert, wie SO:

---
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 }}).
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Klammern werden durch die Verwendung einer Referenz anstelle einer URL durch Klammern ersetzt.

Sie können es Ihnen ermöglichen, alle Ihre Links an derselben Stelle (zum Beispiel unten) und nicht über das gesamte Dokument zu definieren. Ich muss sagen, ich habe diese Funktion nicht viel verwendet, aber in diesem Fall ist es nützlich.

Die Idee besteht darin, die Verknüpfungsreferenzen aus unserem Router autogenerieren, damit wir unsere Routen als Referenz in jeder Datei verwenden können. Es stellt sich heraus, dass dies in Flüssigkeit überraschend einfach ist:

[I am a link](http://link.url/)
Nach dem Login kopieren

Wenn dies für Schleife überall auf der Seite hinzugefügt wird, weist dies Jekyll an, dies als Liquid Code zu verarbeiten, der dann als Markdown -Referenzen verarbeitet wird. Zum Beispiel könnten wir zum Beispiel zu unserem vorherigen Beispiel zurückkehren:

[I am a link][id_reference]

​[id_reference]: http://link.url
Nach dem Login kopieren

Jetzt reden wir, oder? Das einzige Problem besteht darin, diese Schleife in eine beliebige Seite aufzunehmen. Zuerst dachte ich daran, es im Layout hinzuzufügen, sodass es mit dem entsprechenden Layout automatisch zu einer beliebigen Seite hinzugefügt wird. Das Problem ist, dass Layouts nicht als Markdown in Jekyll verarbeitet werden, sodass die Referenzen am Ende des DOM tatsächlich sichtbar sind. Schlimmer noch, sie sind auf unseren Seiten nicht nutzbar, da sie nicht als Markdown bearbeitet wurden ... schade.

Wir können jedoch immer noch etwas tun, um es etwas besser zu machen. Wir können diese Schleife in einen flüssigen Teil einfügen und das Teil auf jeder Seite einbeziehen, anstatt die Schleife zu kopieren. Sagen Sie, wir erstellen eine Routen.

# _includes/route.html
{% for route in site.data.routes %}
[{{ route[0] }}]: {{ route[1] }}
{% endfor %}
Nach dem Login kopieren
Und dann auf unserer Seite:

---
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 %}
Nach dem Login kopieren

Hinweis: Sie können das Teil überall auf der Seite aufnehmen, nicht nur oben. Sie könnten es total als die allerletzte Zeile der Datei ausdrücken.

endgültige Gedanken

Das sind Leute, wir haben eine kleine Routing-Komponente im Jekyll Safe-Mode gehackt. Was sind nun die Nachteile davon? Es gibt ein paar kleinere:

    es funktioniert in Markdown; Wenn Sie zufällig einen Link in einfachem HTML haben, müssen Sie auf {{Site.Data.Routes. }} zurückfallen, was nicht schlecht ist, da die Links immer noch vor URL -Updates schützen.
  • Sie können dem Link keinen Anker hinzufügen. Wenn Sie müssen, fallen Sie auf {{ort.data.routes zurück. }}#Anchor (wieder nicht schlecht).
  • Sie müssen das HTML -Teil auf allen Seiten einbeziehen, was mühsam sein kann (auch wenn Sie dies als Erweiterung der Yaml -Frontmaterie betrachten, die Sie sowieso schreiben müssen).
  • Abgesehen von diesen Nachteilen ist alles gut und glänzend. Was denkst du?

häufig gestellte Fragen (FAQs) zum Hacken der Routing -Komponente in Jekyll

Welche Bedeutung hat die Routing -Komponente in Jekyll? Es ist für die Zuordnung jeder Seite auf eine bestimmte URL verantwortlich, die für die Navigation und SEO von Site unerlässlich ist. Durch das Hacken der Routing -Komponente können Sie die URL -Struktur Ihrer Website an Ihre spezifischen Anforderungen anpassen und die Benutzererfahrung und die Sichtbarkeit von Suchmaschinen verbessern. Ermöglicht Ihnen die Anpassung Ihrer URL -Struktur durch die Verwendung von Permalinks. Sie können einen benutzerdefinierten Permalink in der Frontmunde Ihres Beitrags angeben, wodurch die Standard -URL -Struktur außer Kraft gesetzt wird. Auf diese Weise können Sie beschreibendere und benutzerfreundlichere URLs erstellen, die die SEO- und Benutzererfahrung Ihrer Website verbessern können.

Was sind die Vorteile der Verwendung von Jekyll für meine Website? , blog-bewusst, statischer Site-Generator, der sich perfekt für persönliche, Projekt- oder Organisationsstandorte eignet. Es ist unglaublich flexibel und unterstützt benutzerdefinierte URL -Strukturen, Themen, Plugins und mehr. Da es statische Websites erzeugt, ist es im Vergleich zu herkömmlichen CMS-Plattformen unglaublich schnell und sicher. von Drittanbieter-Bereitstellungsplattformen, einschließlich Github-Seiten, Netlify und mehr. Um Ihre Website bereitzustellen, müssen Sie sie lokal erstellen und dann die generierten statischen Dateien auf Ihre ausgewählte Plattform verschieben. Jede Plattform hat ihren eigenen spezifischen Bereitstellungsprozess. Überprüfen Sie daher ihre Dokumentation auf detaillierte Anweisungen. , von persönlichen Blogs bis zu großen Organisations -Websites. Einige Beispiele sind die offizielle Jekyll -Website, Github -Seiten und viele mehr. Auf der offiziellen Jekyll -Website finden Sie einen Schaufenster von Jekyll -Websites. Websites. Es ist sehr kompatibel mit Jekyll und bietet einen einfachen, optimierten Bereitstellungsprozess. Sie können Ihr GitHub -Repository mit Cloudflare -Seiten verbinden und Ihre Website automatisch erstellt und bereitstellen, wenn Sie in Ihr Repository drücken. Die Jekyll -Website ist eine großartige Ressource, um mehr über Jekyll zu erfahren. Es bietet umfassende Dokumentation, Tutorials und ein Schaufenster von Jekyll -Websites. Darüber hinaus stehen viele Community -Ressourcen zur Verfügung, einschließlich Foren, Blogs und Github -Repositories.

Wie kann ich meiner Jekyll -Site Plugins hinzufügen? Um ein Plugin hinzuzufügen, müssen Sie es installieren, und fügen Sie es dann zur _config.yml -Datei Ihrer Website hinzu. Einige Plugins erfordern möglicherweise auch eine zusätzliche Konfiguration. Überprüfen Sie daher unbedingt die Dokumentation des Plugins auf detaillierte Anweisungen.

Kann ich Jekyll mit anderen Programmiersprachen verwenden? Mit anderen Programmiersprachen mithilfe von Plugins und Integrationen verwendet werden. Zum Beispiel können Sie Jekyll mit JavaScript verwenden, um Ihre Website oder mit CSS -Präprozessoren wie SASS zu dynamischen Funktionen hinzufügen, um Ihren Styling -Prozess zu optimieren. > Jekyll bietet verschiedene Funktionen, mit denen Sie Ihre Website für SEO optimieren können. Dies umfasst benutzerdefinierte URL -Strukturen, Unterstützung für Meta -Tags und die Möglichkeit, eine XML -Sitemap zu erzeugen. Da Jekyll statische Websites erzeugt, ist es außerdem unglaublich schnell, was die Suchmaschinenrangliste Ihrer Website verbessern kann.

Das obige ist der detaillierte Inhalt vonHacken einer Routing -Komponente in Jekyll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage