Statisk webbplatsgenerator
Statiska webbplatsgeneratorer (SSG) är motorer som använder textinmatningsfiler (som Markdown , reStructuredText och AsciiDoc ) för att generera statiska webbsidor . Statiska webbplatser som genereras av statiska webbplatsgeneratorer kräver ingen backend efter webbplatsgenerering, vilket gör dem till förstklassiga medborgare på innehållsleveransnätverk (CDN). Några av de mest populära statiska webbplatsgeneratorerna är Jekyll , Hugo och Next.js ( JavaScript ). SSG:er är vanligtvis för sällan ändrande, informativt innehåll, såsom produktsidor, nyhetswebbplatser, (mjukvaru)dokumentation, manualer och bloggar.
Historia
Innan paradigmen för statiska webbplatsgeneratorer blev utbredd, var Wikipedia en avant la lettre SSG, som använde markdown för att tjäna statiska encyklopediska artiklar.
Den första moderna statiska webbplatsgeneratorn var Jekyll som släpptes 2008 av Tom Preston-Werner, en av medgrundarna till GitHub. Det populariserade ett system som:
- tar markeringsingångar för platt text för innehåll
- lagrar mallen och innehållet i samma struktur (som ett git-förråd)
Arkitektur
SSG:er består vanligtvis av en mall skriven i HTML med ett mallsystem, som flytande (Jekyll) eller Go-mall (Hugo). Samma struktur (vanligtvis ett Git- förråd) inkluderar innehåll i ett vanlig textformat som markdown eller reStructuredText . En enskild fil motsvarar ofta en enda webbsida. Webbplatsens variabelinställningar lagras i en konfigurationsfil med platt text _config.yml
( YAML ), _config.toml
( TOML ) eller _config.json
( JSON ). Sidfiler börjar vanligtvis också med en YAML, TOML eller JSON ingress för att definiera variabler som titel, permalänk, datum etc. Filer med namn som börjar med ett understreck ( _ ) som
_index.md (
i motsats till index.md
) betraktas som mallar eller arketyper och renderas således inte som sidor i sig.
Exempel
Flera hundra SSG har dokumenterats existera, med de allra flesta skrivna på språk som redan är framträdande på webben, som Python, Go och JavaScript.
Systemetikett/namn | Språk | Anteckningar |
---|---|---|
Jekyll | Rubin | Använder flytande mallspråk från Shopify. Särskilt populärt på GitHub-sidor. |
Hugo | Gå | Använder Go-mallar och dess främsta försäljningsargument är dess höga hastighet när du bygger stora webbplatser. |
Next.js | JavaScript | Använder React-mallar. |
Pelikan | Pytonorm | Använder Jinja2-mallar, stöder flera språk och innehåll kan importeras från populära bloggplattformar som WordPress. |
Jämförelse med system på serversidan
Många mallsystem på serversidan har en möjlighet att publicera utdatasidor på servern, där de publicerade sidorna är statiska . Detta är vanligt i innehållshanteringssystem, som Vignette , men anses inte generera utanför servern. I de flesta fall stör detta "publiceringsalternativ" inte mallsystemet , och det kan göras av extern programvara, som Wget .
Människor började använda dynamiska sidor på serversidan genererade från mallar med redan existerande programvara anpassad för denna uppgift. Denna tidiga mjukvara var förprocessorerna och makrospråken , anpassade för webbanvändning, som kördes på CGI . Därefter var en enkel men relevant teknik den direkta exekveringen som gjordes på tilläggsmoduler, som började med SSI .