Statische sites zijn om vele redenen populair. Het vermijden van overkill oplossingen en het eenvoudig houden van een project zonder databases, te veel afhankelijkheden, of specifieke server-side configuraties (geen PHP, geen MySQL / MSSQL, .NET, Python, Ruby, etc.) maken het zeer eenvoudig te implementeren en robuust te zijn tegen tal van mogelijke kwetsbaarheden. Uiteindelijk worden dit eenvoudige HTML-pagina's die aan de gebruiker worden aangeboden.
In deze gids zal ik je laten zien hoe je je ontwikkelomgeving in te stellen met Hugo en je eerste statische Hugo-website te bouwen.
Het legendarische ontwerp-acroniem KISS - Keep It Simple, Stupid - kan worden toegepast op Hugo en hoe deze de statische website-generatorruimte benadert.
Hugo is gebouwd in Go en stelt snel uw statische pagina's samen (het kost een aantal milliseconden om een kleine site te compileren - en kan duizenden pagina's in seconden maken).
Hugo biedt ook essentiële gereedschappen voor de statische website-workflow (inclusief implementatie- en migratietools), waardoor ontwikkelaars en ontwerpers zich kunnen concentreren op de leuke delen, zoals het uitoefenen van hun creativiteit en het implementeren van deze creativiteit in de constructie van de website..
Wanneer we op inhoud gebaseerde websites bouwen, kunnen we enkele algemeenheden op alle sites aannemen en Hugo geeft daar een kader voor. We kunnen met name inhoudstypen zoals berichten, categorieën, recensies of producten vastleggen en de gegevens ordenen. Vervolgens kunnen we elk een specifieke look geven via sjablonen en stylesheets.
In de toekomst kunnen we het dan echt overal naartoe rijden binnen de ruimte van de HTML / CSS / JS-statische website. Als je er pragmatisch over nadenkt, is dat een grote ruimte die veel ruimte biedt voor creativiteit.
jQuery wordt goed uitgevoerd en er is niets dat u stopt met het gebruik van services van derden op uw statische pagina, als u ze nodig hebt. Dus beperk uzelf niet door te denken dat u andere bibliotheken of applicaties niet kunt integreren in uw statische sites. Het is echt niet het geval - u kunt alle beschikbare JavaScript-bibliotheken gebruiken.
Dus voor een paar pagina's van een bedrijfsbrochure type website, met een link naar een Google Formulieren voor een Contact Us-pagina. En als u andere soorten gegevens wilt weergeven, kunt u JavaScript gebruiken voor dat aspect van uw site.
Neem bijvoorbeeld een kleine winkel of freelancer met een paar producten of diensten waarvoor geen volledige eCommerce-oplossing nodig is. In plaats daarvan hebben ze alleen productinformatie en een link 'contact' op de pagina nodig. Hugo kan het aan het einde van een ochtend doen. Hosting is niet eens een groot probleem - het is eigenlijk een bijzaak, want we serveren gewoon eenvoudige HTML-pagina's.
Hugo werkt ook goed voor projectdocumentatie over GNU-projecten. Denk bijvoorbeeld aan start-ups of MKB-bedrijven die behoefte hebben aan een eenvoudige aanwezigheid.
Wat Hugo niet kan doen is dynamisch inhoud, bijvoorbeeld door een database aangedreven formulieren, zoek- of gebruikerssystemen. Als dat is wat u zoekt, dan is Hugo dat zeker niet wat je wilt. Maar voor de andere keren, wanneer je merkt dat je zegt "kunnen we hier niet gewoon een basispagina voor opzetten?" Statische website-generators zijn een solide optie. Houd er ook rekening mee dat Hugo niet de enige statische site-generator is. Er zijn veel mensen die er al heel lang zijn, hier is een lijst van hen.
Voor het bouwen van live inhoudsblogs zoals nieuwssites, zou Hugo een geweldige oplossing kunnen zijn om snel een pagina te maken waarop die dekking kan worden gekoppeld vanaf uw hoofdsite en deze binnen enkele minuten online te krijgen, wat betekent dat u snel kunt blijven toevoegen en de wijzigingen opnieuw kunt implementeren heel snel. Maar voor het maken van een volledige nieuwssite met zoeken en vele schrijvers, zou het echt niet geschikt zijn om Hugo te gebruiken.
Hugo mist ook het gebruik van geavanceerdere tools voor zijn activapijplijn zoals ES6 en Sass - als je die technologie wilt gebruiken, moet je Gulp of Grunt opnemen om de klus te klaren; anders werkt het vanilla CSS en JavaScript het beste.
Hugo is geschreven in Go en heeft ondersteuning voor vele platforms, om alle releases te bekijken die je hier kunt bezoeken
Voor macOS-gebruikers met HomeBrew kan de installatie als volgt worden gedaan:
update brouwen && brew hugo installeren
Meer informatie over installatie voor Mac OSX en Windows
Nadat Hugo is geïnstalleerd, kunnen we de installatie testen door deze uit te voeren hugo help
in de opdrachtprompt of hugo versie
Nu Hugo is geïnstalleerd, kunnen we beginnen met het maken van de website. Voer de volgende opdracht uit om 'uw sitenaam-hier' te vervangen door uw projectnaam:
$ hugo nieuwe site your-sitename-here
Hiermee wordt een steiger voor uw site gemaakt die u in uw vinder kunt bekijken
of in uw terminal via de boom
commando
Hugo heeft 5 submappen en 1 bestand gemaakt, waarvan het gebruik maakt om de uiteindelijke website te maken, wat ze allemaal betekenen:
content / producten
bijvoorbeeld voor de inhoud van uw productenWe moeten een bericht toevoegen om de site te zien die we zojuist hebben gemaakt, dit doen we met de volgende opdracht:
$ hugo nieuwe post / first-post.md
Bewerk het bestand nu in content / post / first-post.md, het zal standaard iets van het volgende bevatten:
+++ date = "2016-09-26T13: 19: 03 + 07: 00" title = "eerste bericht" +++
De inhoud erin +++
is de TOML-configuratie voor de post. Deze configuratie wordt genoemd voorste zaak. Hiermee kunt u de postconfiguratie samen met de inhoud ervan definiëren. Standaard heeft elk bericht de configuratie-eigenschappen die hierboven worden weergegeven.
Voeg wat tekst toe na de +++
zoals zo:
+++ date = "2016-09-26T13: 19: 03 + 07: 00" title = "eerste bericht" +++ Hallo wereld!
Dus we kunnen de live reload-functionaliteit bekijken die is ingebouwd met Hugo, laten we wat wijzigingen aanbrengen in de site en kijken wat er gebeurt.
Start de server eerst door te draaien
$ hugo-server
Als u nu enkele wijzigingen in uw bestand aanbrengt, ziet u Hugo onmiddellijk opnieuw laden.
Uw website is beschikbaar op http: // localhost: 1313 maar wacht even - je ziet nog steeds alleen een lege witte pagina op dit punt, omdat we geen thema hebben gedefinieerd!
Hugo heeft een zeer robuuste en veelzijdige themabibliotheek als hij Go's gebruikt html / template
bibliotheek. Thema's zijn eenvoudig om mee te werken, installatie wordt gedaan door simpelweg de repository van een thema te klonen in de thema's
map voor uw Hugo-site.
Hugo komt niet met een standaardthema, dus jij moet zet er een.
Er zijn veel open source-thema's waaruit u kunt kiezen.
Laten we heel veel thema's toevoegen aan onze site, zodat we met iedereen kunnen spelen en zien wat we leuk vinden. Doe dit door het volgende in onze Hugo-directory uit te voeren:
$ git clone --recursive https://github.com/spf13/hugoThemes.git-thema's Klonen in 'thema's' ... remote: objecten tellen: 880, klaar. afstandsbediening: objecten comprimeren: 100% (5/5), gereed. remote: Total 880 (delta 1), reused 0 (delta 0), pack-reused 875 Ontvangende objecten: 100% (880/880), 669.20 KiB | 288,00 KiB / s, klaar. Het oplossen van delta's: 100% (506/506), klaar. Verbinding controleren ... klaar.
Je ziet nu een hele hoop thema's worden gekloond op je site. Er zijn veel, dus je hebt tijd voor een pauze terwijl het klonen ...
Om een thema te gebruiken, start u Hugo met de -t
of --thema
parameter zoals zo
$ hugo -t ThemeName
Of u kunt toevoegen aan uw config.toml
:
thema: "ThemeName"
De THEMENAME moet overeenkomen met de naam van de directory binnenin /thema's
.
Wanneer u een thema-naam uit de map hebt gekozen, start u de server met hugo-server --theme = ThemeName
en neem een kijkje op http: // localhost: 1313
Hier zijn enkele voorbeelden van enkele van de thema's die we hebben gekloond, die ik heb gebruikt bedelen
, knapperig
encactus
kijk eens rond, er zijn er zoveel om uit te kiezen!
Dus je hebt nu een website gegenereerd met een Hello World-bericht, wat kunnen we nog meer doen?
Het maken van een basisblog is heel gemakkelijk met Hugo te maken. Eerst moet je een archetype definiëren voor de standaardpost, dus maak een nieuw bestand aan in archetypes / default.md
en voeg het volgende toe als voorkant materie:
+++ tags = ["lassen", "metaalwerk"] categorieën = ["berichten"] +++
Hier plaatsen we enkele standaardtags, voor een blog over lassen kunnen we zeker zijn dat we deze tags op al onze berichten willen hebben, en we maken een categorie met de naam posts, dus we hebben een standaard wanneer we een bericht maken.
Voeg nu je eerste bericht toe via de terminal, zoals zo:
$ hugo nieuw bericht / tig-welding-a-bike-frame.md
Hiermee wordt een bericht gemaakt met het archetype dat u eerder hebt gedefinieerd. U kunt het nu openen in een teksteditor en beginnen met wegschrijven in het markdown-formaat.!
Laten we wat meer berichten toevoegen:
$ hugo nieuwe post / welding-a-roll-cage.md
Nogmaals, om content toe te voegen, opent u gewoon het bestand dat Hugo heeft gemaakt en begint het met het toevoegen van inhoud aan het einde van het bestand na de eerste kwestie.
Om een fotogalerij te bouwen met Hugo, gebruiken we de uitstekende tool hugo-gallery
beschikbaar op GitHub.
Het gebruik is als zodanig:
hugo-gallery
De hugo-gallery
tool maakt een nieuwe berichtenmap met een markdown-bestand voor elke afbeelding in de brondirectory, zodat een geordende diavoorstelling mogelijk is. Het leest alle bestanden uit de Bronpad
map en sla ze op in de statische map van de Hugo-site.
Het maakt een nieuwe map binnen de inhoudsdirectory op basis van de Titel
voorzien bijv content / lassen
Bijvoorbeeld:
$ hugo-gallery static / images / welding-photos welding "Foto's van mijn krankzinnige lasvaardigheden"
Bezoek localhost: 1313 / lassen
om de inhoud te bekijken.
Hugo heeft verschillende hulpmiddelen voor implementatie, zoals hugomac, een OSX-menubalk-app waarmee de gebruiker gemakkelijk kan publiceren naar EC2-hosting. Geen opdrachtregel nodig.
Ook biedt hugodeploy een SFTP-configuratie om mee te implementeren of je kunt gewoon de geautomatiseerde implementaties gebruiken die met Hugo zijn meegeleverd.
Statische site-generators bestaan al een tijdje, en Hugo bouwt voort op de toolset, waardoor het snel en gemakkelijk is om sites te laten kloppen of zelfs een bestaande site van WordPress naar Hugo te migreren. Er zijn veel hulpmiddelen voor Hugo, inclusief front-end-redactie.
In de toekomst zal het leuk zijn om meer modules te zien voor Hugo die ondersteuning biedt voor zaken als een contactformulier en galerijondersteuning of gerelateerde berichten, bijvoorbeeld.
De Hugo-routekaart heeft veel opwindende ideeën, zoals het dynamisch aanpassen van het formaat, ondersteuning voor rsync en imago-import van hostingproviders en eenvoudiger hosting met AWS EC2- en GitHub-integratie.
Als u Hugo niet gebruikt, zorg er dan voor dat u terugkijkt op het project terwijl het zich ontwikkelt!