Kiedy budujesz stronę internetową, zwykle generujesz część swoich ostatecznych treści dynamicznie. Następnie będziesz chciał wstrzyknąć te dane do swoich końcowych stron internetowych w celu wyświetlenia w przeglądarce.

Możesz zastosować jedno z dwóch podejść: osadzić strukturę strony w programie lub połączyć dane końcowe z oddzielnymi plikami szablonów.

Szablonowanie zapewnia separację problemów dotyczących bardziej łatwej w utrzymaniu bazy kodu. Ułatwia również dzielenie zadań front-endowych i back-endowych, przydzielając je różnym członkom zespołu. Go ma doskonałą obsługę szablonów w swojej standardowej bibliotece.

Wprowadzenie do tworzenia szablonów w Go

Go ma dwa pakiety szablonów w standardowej bibliotece: tekst/szablon oraz html/szablon. Pakiet text/template posiada funkcjonalność parsowania plików tekstowych, podczas gdy html/template obsługuje HTML. Używając html/template jesteś chroniony przed atakami cross-site scripting (XSS), ponieważ Go unika wprowadzania danych podczas renderowania. To kolejna zaleta tworzenia szablonów nad podejściem ręcznym.

instagram viewer

Ponieważ pakiet szablonów jest częścią standardowej biblioteki, nie musisz instalować żadnych zależności; po prostu zaimportuj:

import "html/szablon"

Zacząć od tworzenie pliku HTML do wykorzystania jako szablon dla Twojej aplikacji. Możesz użyć standardu .html rozszerzenie lub albo .gohtml lub .tmpl, oba są również wspólne. Niezależnie od używanego rozszerzenia funkcjonalność aplikacji będzie taka sama. Niektóre edytory tekstu mogą stosować różne wyróżnianie składni w zależności od rozszerzeń szablonów. Oto podstawowy szkielet:

<!DOCTYPE html>
<html lang="en">
<głowa>
<zestaw znaków meta="UTF-8">
<tytuł>Dokument</title>
</head>
<ciało>

</body>
</html>

Zapisz ten plik w katalogu swojego programu Go. Możesz teraz zacząć z nim pracować, jako z szablonem, w swoim programie.

Utwórz globalną instancję Szablon metoda pakietu szablonów. Dostęp do tego wystąpienia szablonu uzyskasz z różnych części programu.

var tmplt *szablon. Szablon

Będziesz musiał stworzyć prosty serwer, aby renderować i wyświetlać swoje szablony. Oto jak uruchomić prosty serwer w Go za pomocą sieć/http pakiet:

funkcjonowaćuruchomSerwer() {
http. HandleFunc("/home", handlePage)
błąd := http. ListenAndServe("host lokalny:8080", zero)

jeśli błąd != zero {
dziennik. Fatalln("Wystąpił błąd z serwerem:", err)
}
}

Zadzwonisz do uruchomSerwer funkcja z głównej funkcji, aby uruchomić serwer. Serwer ma tylko jedną trasę, /home trasa, która wyświetli twoją stronę. The uchwytStrona parametr to nazwa funkcji obsługi, która wyrenderuje twoją stronę. The Słuchaj i podawaj metoda uruchamia serwer nasłuchujący na porcie 8080 na localhost, czyli własny komputer.

Przekazywanie zmiennych do szablonów

Utwórz globalną strukturę o nazwie Aktualności:

rodzaj Aktualności struktura {
Nagłówek strunowy
Ciało strunowy
}

Użyjesz tej struktury do przechowywania danych i przekazywania ich do szablonu w celu wyświetlenia na końcowej stronie. W swoim szablonie możesz następnie użyć tej składni do wstrzyknięcia danych:

{{ Nazwa }}

Gdzie Nazwa to nazwa zmiennej, którą przekazałeś do szablonu. Podczas renderowania szablonu zastąpi on wartości w nawiasach klamrowych odpowiednimi danymi z kodu Go. Ponieważ poniższy przykład przekaże strukturę, użyjesz notacji kropkowej, aby uzyskać dostęp do jej pól:

<ciało>
<h1>{{ .Nagłówek }}</h1>
<p> {{ .Ciało }} </p>
</body>

Zastąp pusty element treści w znaczniku szkieletu szablonu powyższym kodem.

The uchwytStrona funkcja obsługi sprawdzi, czy żądanie dla strony jest żądaniem GET. Następnie wypełnia strukturę przykładowymi danymi, zanim wyrenderuje szablon i wyświetli ostateczną stronę:

funkcjonowaćuchwytStrona(pisarz http. ResponseWriter, żądanie *http. Żądanie) {
jeśli żądanie. Metoda == „POBIERZ” {
tmplt, _ = szablon. ParseFiles("tutorial.html")

wydarzenie := Wiadomości{
Nagłówek: „makeuseof.com ma wszystko, co Tech”,
Treść: „Odwiedź MUO dla cokolwiek związanego z technologią",
}

błąd := tmplt. Wykonaj (pisarz, wydarzenie)

jeśli błąd != zero {
zwrócić
}
}
}

The ParseFiles Metoda analizuje określony plik HTML. The wydarzenie zmienna jest zainicjowaną strukturą. The Wykonać Metoda wprowadzi dostarczone dane do końcowej strony, zgodnie z symbolami zastępczymi w szablonie. Wykonaj trwa Autor odpowiedzi oraz dane, w tym przypadku struct.

Oto wynik uruchomienia serwera i odwiedzenia strony:

Używanie struktur kontrolnych w szablonach

W szablonach można również używać struktur kontrolnych, takich jak instrukcje warunkowe i pętle.

Pętla umożliwia wypisanie kilku wartości i ponowne użycie tej samej struktury dla każdej z nich. Użyj zasięg słowo kluczowe określające początek powtarzającej się treści oraz koniec słowo kluczowe na koniec. W pętli możesz użyć {{.}} składnia do wstrzyknięcia bieżącej wartości:


    {{zasięg .}}
  1. {{.}}

  2. {{koniec}}

Następnie przekażesz nazwę struktury danych, przez którą chcesz przejść, jako parametr do metody Execute:

makeUseOfCategories := []strunowy{"Objaśnienie technologii", "Programowanie", "Linux",
"Android", "iOS", "Wiele Więcej..."}

błąd := tmplt. Wykonaj (pisarz, makeUseOfCategories)

jeśli błąd != zero {
zwrócić
}

The makeUseOfCategories zmienna to wycinek ciągów do przekazania jako parametr danych. Oto wynik pętli przez plasterek:

Możesz użyć instrukcji warunkowej w swoich szablonach, aby przetestować wartość zmiennej logicznej. Utwórz strukturę z polami logicznymi, tak jak poniżej:

rodzaj Prawdziwy fałsz struktura {
Jest prawdziwy głupota
To fałsz głupota
Jest domyślny głupota
}

Aby użyć warunkowego, dołącz jeśli słowo kluczowe w podwójnych nawiasach klamrowych przed nazwą testowanej zmiennej. Zakończ blok warunkowy za pomocą koniec słowo kluczowe w nawiasach klamrowych:

{{jeśli .Istnieje}}
<p>Ocenia prawdę i wyjdzie</p>
{{koniec}}

{{jeśli .IsDefault}}
<p>Ocenia fałszywie i wygrał't wyjście</p>
{{koniec}}

{{jeśli .jest fałszywy}}
<p>Ocenia fałszywie i wygrał't wyjście</p>
{{koniec}}

Inicjowanie struktury w Go ustawia domyślnie wartości na false, więc jeśli nie zainicjujesz pola, zostanie ono przeliczone na false. Po zainicjowaniu struktury i przekazaniu zmiennej jako danych do szablonu tylko pola, które mają wartość true, powodują wyświetlenie danych wyjściowych.

wybór := Prawda Fałsz {
Jest prawdziwy: PRAWDA,
To fałsz: fałszywy,
}

błąd := tmplt. Wykonaj (pisarz, wybór)

Ostateczny wynik zawiera tylko jeden akapit, ponieważ tylko pole isTrue daje wartość true:

Nie musisz używać szablonów dla swoich aplikacji backendowych

Tworzenie szablonów nie jest wymagane w aplikacjach Go. Możesz użyć innych podejść, takich jak osadzanie struktury strony w programie, wraz z jej logiką i innym zachowaniem.

Jednak skończysz na tym, że wykonasz więcej pracy dla siebie. Szablony Go pomagają zapobiegać atakom XSS i ułatwiają oddzielenie pracy nad strukturą strony od logiki zaplecza.