Pri vytváraní webovej stránky zvyčajne dynamicky generujete časť svojho konečného obsahu. Tieto údaje potom budete chcieť vložiť do svojich finálnych webových stránok, aby ste ich mohli zobraziť v prehliadači.

Môžete použiť jeden z dvoch prístupov: vložiť štruktúru stránky do svojho programu alebo skombinovať konečné údaje so samostatnými súbormi šablón.

Šablóna poskytuje oddelenie obáv pre lepšie udržiavateľnú kódovú základňu. Uľahčuje tiež rozdelenie front-end úloh a back-end úloh a pridelí ich rôznym členom tímu. Go má vo svojej štandardnej knižnici vynikajúcu podporu šablón.

Začíname so šablónami v Go

Go má v štandardnej knižnici dva balíky šablón: text/šablónu a html/šablóna. Balík text/template má funkcie na analýzu textových súborov, zatiaľ čo html/template spracováva HTML. Použitím html/template ste zabezpečený pred útokmi cross-site scripting (XSS), pretože Go uniká zadávaniu údajov počas vykresľovania. To je ďalšia výhoda šablóny oproti manuálnemu prístupu.

Keďže balík šablón je súčasťou štandardnej knižnice, nebudete musieť inštalovať žiadne závislosti; stačí importovať:

instagram viewer
importovať "html/šablóna"

Začnite tým vytvorenie súboru HTML použiť ako šablónu pre vašu aplikáciu. Môžete použiť štandard .html predĺženie alebo buď .gohtml alebo .tmpl, obe sú tiež bežné. Bez ohľadu na to, aké rozšírenie použijete, funkčnosť v rámci vašej aplikácie bude rovnaká. Niektoré textové editory môžu použiť rôzne zvýraznenie syntaxe v závislosti od rozšírení vašich šablón. Tu je základná kostra:

<!DOCTYPE html>
<html jazyk="en">
<hlavu>
<meta znaková sada="UTF-8">
<titul>Dokument</title>
</head>
<telo>

</body>
</html>

Uložte tento súbor do adresára programu Go. Teraz s ním môžete začať pracovať ako so šablónou vo svojom programe.

Vytvorte globálnu inštanciu súboru Šablóna metóda balíka šablón. K tejto inštancii šablóny budete pristupovať z rôznych častí vášho programu.

var tmplt *šablóna. Šablóna

Na vykreslenie a zobrazenie šablón budete musieť vytvoriť jednoduchý server. Tu je návod, ako spustiť jednoduchý server v Go pomocou net/http balík:

funcrunServer() {
http. HandleFunc("/home", handlePage)
chyba := http. ListenAndServe("localhost:8080", nula)

ak chyba!= nula {
log. Fatalln("Vyskytla sa chyba servera:", err)
}
}

Zavoláte na runServer z hlavnej funkcie na spustenie servera. Server má iba jednu cestu, /home trasu, ktorá zobrazí vašu stránku. The handlePage parameter je názov funkcie obsluhy, ktorá vykreslí vašu stránku. The Počúvajte a podávajte metóda spustí server počúvajúci na porte 8080 na localhost, teda vlastný počítač.

Odovzdávanie premenných do šablón

Vytvorte globálnu štruktúru s názvom Správy:

typu Správy štrukturovať {
Nadpis reťazec
Telo reťazec
}

Túto štruktúru použijete na uloženie údajov a ich odovzdanie do šablóny, ktorá sa zobrazí na vašej poslednej stránke. Vo svojej šablóne potom môžete použiť túto syntax na vloženie údajov:

{{ názov }}

Kde názov je názov premennej, ktorú ste odovzdali do svojej šablóny. Keď vykreslíte šablónu, nahradí hodnoty v zátvorkách zodpovedajúcimi údajmi z vášho kódu Go. Keďže nasledujúci príklad prejde štruktúrou, na prístup k jej poliam použijete bodkovú notáciu:

<telo>
<h1>{{ .Nadpis }}</h1>
<p> {{ .Telo }} </str>
</body>

Nahraďte prázdny prvok tela v značke kostry vašej šablóny kódom uvedeným vyššie.

The handlePage funkcia handler overí, že požiadavka na stránku je požiadavka GET. Potom vyplní štruktúru vzorovými údajmi pred vykreslením šablóny a zobrazením poslednej stránky:

funchandlePage(spisovateľ http. ResponseWriter, vyžiadajte *http. žiadosť) {
ak žiadosť. Metóda == "GET" {
tmplt, _ = šablóna. ParseFiles("tutorial.html")

udalosť := Novinky{
Nadpis: "makeuseof.com má všetko technické",
Telo: „Navštívte MUO pre čokoľvek súvisiace s technológiou",
}

chyba := tmplt. Vykonať (spisovateľ, udalosť)

ak chyba!= nula {
vrátiť
}
}
}

The ParseFiles metóda analyzuje súbor HTML, ktorý určíte. The udalosť premenná je inicializovaná štruktúra. The Vykonať metóda vloží dodané údaje na konečnú stránku podľa zástupných symbolov v šablóne. Vykonať trvá a ResponseWriter a dáta, v tomto prípade struct.

Tu je výsledok zo spustenia servera a návštevy stránky:

Používanie riadiacich štruktúr v šablónach

Vo svojich šablónach môžete použiť aj riadiace štruktúry, ako sú podmienené príkazy a slučky.

Slučka vám umožňuje vypísať niekoľko hodnôt a pre každú znova použiť rovnakú štruktúru. Použi rozsah kľúčové slovo na definovanie začiatku opakovaného obsahu a koniec kľúčové slovo na koniec. V rámci slučky môžete použiť {{.}} syntax na vloženie aktuálnej hodnoty:


    {{rozsah .}}
  1. {{.}}

  2. {{koniec}}

Potom odovzdáte názov dátovej štruktúry, cez ktorú chcete prejsť, ako parameter do metódy Execute:

makeUseOfCategories := []reťazec{"Vysvetlenie technológie", "Programovanie", "Linux",
"Android", "iOS", "Mnohé ďalšie..."}

chyba := tmplt. Vykonať (spisovateľ, makeUseOfCategories)

ak chyba!= nula {
vrátiť
}

The makeUseOfCategories premenná je časť reťazcov, ktoré sa majú odovzdať ako dátový parameter. Tu je výsledok cyklovania cez rez:

Na testovanie hodnoty booleovskej premennej môžete použiť podmienený príkaz vo svojich šablónach. Vytvorte štruktúru s boolovskými poľami, ako je táto:

typu TrueFalser štrukturovať {
Je pravda bool
IsFalse bool
IsDefault bool
}

Ak chcete použiť podmienku, zadajte ak kľúčové slovo v dvojitých zátvorkách pred názvom premennej na testovanie. Ukončite podmienený blok s koniec kľúčové slovo v zátvorkách:

{{if .IsTrue}}
<p>Hodnotí pravda a bude výstup</str>
{{koniec}}

{{if .IsDefault}}
<p>Hodnotí falošne a vyhral't výstup</str>
{{koniec}}

{{if .IsFalse}}
<p>Hodnotí falošne a vyhral't výstup</str>
{{koniec}}

Inicializácia štruktúry v Go predvolene nastaví hodnoty na false, takže ak neinicializujete pole, vyhodnotí sa ako false. Pri inicializácii štruktúry a odovzdaní premennej ako údajov do šablóny spôsobia zobrazenie výstupu iba polia, ktoré sa vyhodnotia ako pravdivé.

voľba := TrueFalser {
Je pravda: pravda,
IsFalse: falošný,
}

chyba := tmplt. Vykonať (spisovateľ, výber)

Konečný výstup obsahuje iba jeden odsek, pretože iba pole isTrue sa vyhodnotí ako pravdivé:

Pre svoje backendové aplikácie nemusíte používať šablóny

Šablóny nie sú pre vaše aplikácie Go podmienkou. Môžete použiť aj iné prístupy, ako je vloženie štruktúry stránky do vášho programu spolu s jeho logikou a iným správaním.

Nakoniec však urobíte viac práce pre seba. Go templating pomáha predchádzať útokom XSS a uľahčuje oddelenie práce na štruktúre stránky od backendovej logiky.