Ko izdelujete spletno stran, boste nekaj svoje končne vsebine običajno ustvarili dinamično. Te podatke boste nato želeli vnesti v svoje končne spletne strani za prikaz v brskalniku.

Uporabite lahko enega od dveh pristopov: vdelate svojo strukturo strani v svoj program ali združite končne podatke z ločenimi datotekami predlog.

Predloge zagotavljajo ločevanje skrbi za bolj vzdržljivo kodno zbirko. Prav tako olajša razdelitev sprednjih nalog in zalednih nalog, ki jih dodeli različnim članom ekipe. Go ima odlično podporo za predloge v svoji standardni knjižnici.

Kako začeti s predlogami v Go

Go ima dva paketa predlog v standardni knjižnici: besedilo/predloga in html/predloga. Paket text/template ima funkcionalnost za razčlenjevanje besedilnih datotek, medtem ko html/template obravnava HTML. Z uporabo html/predloge ste zaščiteni pred napadi skriptnega izvajanja med spletnimi mesti (XSS), saj se Go med upodabljanjem izogne ​​vnosu podatkov. To je še ena prednost šablon pred ročnim pristopom.

Ker je paket predlog del standardne knjižnice, vam ne bo treba namestiti nobenih odvisnosti; samo uvozi:

instagram viewer

uvoz "html/predloga"

Začni z ustvarjanje datoteke HTML uporabite kot predlogo za svojo aplikacijo. Lahko uporabite standard .html razširitev ali bodisi .gohtml oz .tmpl, oboje je, kar je tudi pogosto. Ne glede na razširitev, ki jo uporabljate, bo funkcionalnost v vaši aplikaciji enaka. Nekateri urejevalniki besedil lahko uporabijo različno označevanje sintakse, odvisno od razširitev vaših predlog. Tukaj je osnovno okostje:

<!DOCTYPE html>
<html lang="en">
<glavo>
<meta charset="UTF-8">
<naslov>Dokument</title>
</head>
<telo>

</body>
</html>

Shranite to datoteko v imenik vašega programa Go. Zdaj lahko začnete delati z njim kot s predlogo v svojem programu.

Ustvarite globalni primerek Predloga metoda paketa predlog. Do tega primerka predloge boste dostopali iz različnih delov svojega programa.

var tmplt *predloga. Predloga

Ustvariti boste morali preprost strežnik za upodabljanje in prikaz vaših predlog. Tukaj je opisano, kako zagnati preprost strežnik v Go z uporabo net/http paket:

funkrunServer() {
http. HandleFunc("/home", handlePage)
napaka := http. ListenAndServe("localhost:8080", nič)

če napaka!= nič {
dnevnik. Fatalln("Prišlo je do napake s strežnikom:", err)
}
}

Poklicali boste runServer funkcijo iz vaše glavne funkcije za zagon strežnika. Strežnik ima samo eno pot, /home route, ki bo prikazala vašo stran. The handlePage parameter je ime funkcije za obravnavo, ki bo upodobila vašo stran. The ListenAndServe metoda zažene strežnik, ki posluša na vratih 8080 na localhost, torej svoj računalnik.

Posredovanje spremenljivk v predloge

Ustvarite globalno strukturo z imenom Novice:

vrsta Novice struct {
Naslov vrvica
Telo vrvica
}

To strukturo boste uporabili za shranjevanje podatkov in posredovanje predlogi za prikaz na končni strani. V svoji predlogi lahko nato uporabite to sintakso za vstavljanje podatkov:

{{ ime }}

Kje ime je ime spremenljivke, ki ste jo posredovali svoji predlogi. Ko upodabljate predlogo, bo zamenjala vrednosti v oklepajih z ustreznimi podatki iz vaše kode Go. Ker bo naslednji primer posredoval strukturo, boste za dostop do njenih polj uporabili zapis s pikami:

<telo>
<h1>{{ .Naslov }}</h1>
<str> {{ .Body }} </str>
</body>

Zamenjajte prazen element telesa v skeletni oznaki predloge z zgornjo kodo.

The handlePage funkcija obdelovalca bo preverila, ali je zahteva za stran zahteva GET. Nato zapolni strukturo z vzorčnimi podatki, preden upodablja predlogo in servira končno stran:

funkhandlePage(pisatelj http. ResponseWriter, zahtevajte *http. Prošnja) {
če prošnja. Metoda == "GET" {
tmplt, _ = predloga. ParseFiles("tutorial.html")

dogodek := Novice{
Naslov: "makeuseof.com ima vse tehnologije",
Telo: "Obiščite MUO za vse, kar je povezano s tehnologijo",
}

napaka := tmplt. Izvedi (pisec, dogodek)

če napaka!= nič {
vrnitev
}
}
}

The ParseFiles metoda razčleni datoteko HTML, ki jo podate. The dogodek spremenljivka je inicializirana struktura. The Izvedi metoda bo vnesla posredovane podatke na končno stran, glede na ograde v predlogi. Izvedba traja a ResponseWriter in podatki, v tem primeru struktura.

Tukaj je rezultat zagona strežnika in obiska strani:

Uporaba kontrolnih struktur v predlogah

V svojih predlogah lahko uporabite tudi nadzorne strukture, kot so pogojni stavki in zanke.

Zanka omogoča izhod več vrednosti in ponovno uporabo iste strukture za vsako. Uporabi obseg ključno besedo za določitev začetka ponovljene vsebine in konec ključna beseda za konec. Znotraj zanke lahko uporabite {{.}} sintaksa za vnos trenutne vrednosti:


    {{obseg .}}
  1. {{.}}

  2. {{konec}}

Nato boste posredovali ime podatkovne strukture, skozi katero želite krožiti, kot parameter metodi Execute:

makeUseOfCategories := []vrvica{"Razložena tehnologija", "Programiranje", "Linux",
"Android", "iOS", "Veliko več ..."}

napaka := tmplt. Izvedi (pisec, makeUseOfCategories)

če napaka!= nič {
vrnitev
}

The makeUseOfCategories spremenljivka je rezina nizov, ki se posreduje kot podatkovni parameter. Tukaj je rezultat premikanja po rezini:

V svojih predlogah lahko uporabite pogojni stavek, da preizkusite vrednost logične spremenljivke. Ustvarite strukturo z logičnimi polji, kot je ta:

vrsta TrueFalser struct {
IsTrue bool
IsFalse bool
Je privzeto bool
}

Če želite uporabiti pogojnik, vključite če ključno besedo v dvojnih oklepajih pred imenom spremenljivke za testiranje. Končajte pogojni blok z konec ključna beseda v oklepajih:

{{if .IsTrue}}
<str>Oceni true in bo izpisal</str>
{{konec}}

{{if .IsDefault}}
<str>Oceni napačno in zmagal't izhod</str>
{{konec}}

{{if .IsFalse}}
<str>Oceni napačno in zmagal't izhod</str>
{{konec}}

Inicializacija strukture v Go privzeto nastavi vrednosti na false, tako da, če polja ne inicializirate, se oceni na false. Ko inicializirate strukturo in posredujete spremenljivko kot podatke v predlogo, se prikažejo samo polja, ki so ovrednotena kot true.

izbira := TrueFalser {
IsTrue: prav,
IsFalse: lažno,
}

napaka := tmplt. Izvedi (pisec, izbira)

Končni rezultat vključuje samo en odstavek, saj je samo polje isTrue ocenjeno kot res:

Ni vam treba uporabljati predlog za vaše zaledne aplikacije

Predloge niso pogoj za vaše aplikacije Go. Uporabite lahko druge pristope, kot je vdelava vaše strukture strani v vaš program, poleg njegove logike in drugega vedenja.

Vendar pa boste na koncu naredili več dela zase. Predloge Go pomagajo preprečiti napade XSS in olajšajo ločevanje dela na strukturi strani od logike zaledja.