Када правите веб локацију, обично ћете динамички генерисати неки од коначног садржаја. Затим ћете желети да убаците те податке у своје коначне веб странице за приказ у прегледачу.
Можете користити један од два приступа: уградити структуру странице у свој програм или комбиновати своје коначне податке са засебним датотекама шаблона.
Шаблон омогућава раздвајање брига за базу кодова која се може одржавати. Такође олакшава раздвајање предњих и позадинских задатака, додељивањем их различитим члановима тима. Го има одличну подршку за шаблоне у својој стандардној библиотеци.
Почетак рада са шаблонирањем у Го
Го има два пакета шаблона у стандардној библиотеци: текст/шаблон и хтмл/темплате. Пакет тект/темплате има функционалност за рашчлањивање текстуалних датотека, док хтмл/темплате управља ХТМЛ-ом. Коришћењем хтмл/темплатеа заштићени сте од напада скриптовања на више локација (КССС) јер Го избегава унос података током рендеровања. Ово је још једна предност шаблонирања у односу на ручни приступ.
Пошто је пакет шаблона део стандардне библиотеке, нећете морати да инсталирате никакве зависности; само га увезите:
увоз "хтмл/темплате"
Старт би креирање ХТМЛ датотеке да се користи као шаблон за своју апликацију. Можете користити стандард .хтмл проширење или било које друго .гохтмл или .тмпл, обе су које су такође заједничке. Које год проширење да користите, функционалност ваше апликације ће бити иста. Неки уређивачи текста могу применити различито истицање синтаксе у зависности од проширења ваших шаблона. Ево основног скелета:
<!ДОЦТИПЕ хтмл>
<хтмл ланг="ен">
<глава>
<мета цхарсет="УТФ-8">
<наслов>Документ</title>
</head>
<тело>
</body>
</html>
Сачувајте ову датотеку у директоријуму вашег програма Го. Сада можете почети да радите са њим, као шаблоном, у оквиру свог програма.
Направите глобалну инстанцу Темплате метод пакета шаблона. Приступићете овој инстанци шаблона из различитих делова вашег програма.
вар тмплт *темплате. Темплате
Мораћете да направите једноставан сервер за приказивање и приказ ваших шаблона. Ево како да покренете једноставан сервер у Го користећи нет/хттп пакет:
фунцрунСервер() {
хттп. ХандлеФунц("/хоме", хандлеПаге)
ерр := хттп. ЛистенАндСерве("лоцалхост:8080", нула)
ако ерр != нула {
Пријава. Фаталлн("Дошло је до грешке са сервером:", грешка)
}
}
Позваћете рунСервер функцију из ваше главне функције за покретање сервера. Сервер има само једну руту, /home руте, која ће приказати вашу страницу. Тхе хандлеПаге параметар је име функције руковаоца која ће приказати вашу страницу. Тхе ЛистенАндСерве метода покреће сервер који слуша порт 8080 на лоцалхост, односно ваш сопствени рачунар.
Преношење променљивих у шаблоне
Креирајте глобалну структуру под називом Вести:
тип Вести струцт {
Наслов низ
Тело низ
}
Ову структуру ћете користити за складиштење података и прослеђивање у шаблон за приказ на завршној страници. У свом шаблону онда можете да користите ову синтаксу за убацивање података:
{{ име }}
Где име је име променљиве коју сте проследили свом шаблону. Када рендерујете шаблон, он ће заменити вредности у заградама одговарајућим подацима из вашег Го кода. Пошто ће следећи пример проследити структуру, користићете нотацију тачака за приступ њеним пољима:
<тело>
<х1>{{ .Наслов }}</h1>
<стр> {{ .Тело }} </п>
</body>
Замените празан елемент тела у ознаци скелета вашег шаблона кодом изнад.
Тхе хандлеПаге функција руковаоца ће потврдити да је захтев за страницу ГЕТ захтев. Затим попуњава структуру са узорцима података пре приказивања шаблона и приказивања коначне странице:
фунцхандлеПаге(писац хттп. РеспонсеВритер, захтев *хттп. Захтев) {
ако захтев. Метод == "ГЕТ" {
тмплт, _ = шаблон. ПарсеФилес("туториал.хтмл")догађај := Вести{
Наслов: "макеусеоф.цом има све Тецх",
Тело: „Посетите МУО за било шта везано за технологију",
}ерр := тмплт. Извршити (писац, догађај)
ако ерр != нула {
повратак
}
}
}
Тхе ПарсеФилес метода анализира ХТМЛ датотеку коју наведете. Тхе догађај променљива је иницијализована структура. Тхе Извршити метод ће убацити достављене податке у завршну страницу, према чуварима места у шаблону. Извршење траје а РеспонсеВритер а подаци, у овом случају, структура.
Ево резултата покретања сервера и посете странице:
Коришћење контролних структура у шаблонима
Такође можете да користите контролне структуре као што су условни искази и петље у својим шаблонима.
Петља вам омогућава да избаците неколико вредности и поново користите исту структуру за сваку. Користити домет кључну реч за дефинисање почетка садржаја који се понавља и крај кључна реч за крај. Унутар петље можете користити {{.}} синтакса за убацивање тренутне вредности:
{{домет .}}
- {{.}}
{{крај}}
Затим ћете проследити име структуре података кроз коју желите да прођете као параметар методи Екецуте:
макеУсеОфЦатегориес := []низ{"Објашњена технологија", "Програмирање", "Линук",
„Андроид“, „иОС“, „Много више...“}ерр := тмплт. Изврши (писац, макеУсеОфЦатегориес)
ако ерр != нула {
повратак
}
Тхе макеУсеОфЦатегориес променљива је исечак стрингова који се проследјују као параметар података. Ево резултата петље кроз исечак:
Можете користити условни исказ у својим шаблонима да бисте тестирали вредност логичке променљиве. Направите структуру са логичким пољима, овако:
тип ТруеФалсер струцт {
Тачно је боол
ИсФалсе боол
ИсДефаулт боол
}
Да бисте користили условни, укључите ако кључна реч у дуплим заградама испред имена променљиве за тестирање. Завршите условни блок са крај кључна реч у заградама:
{{иф .ИсТруе}}
<стр>Процењује тачно и даје излаз</п>
{{крај}}{{иф .ИсДефаулт}}
<стр>Оцењује лажно и победио'т излаз</п>
{{крај}}
{{иф .ИсФалсе}}
<стр>Оцењује лажно и победио'т излаз</п>
{{крај}}
Иницијализација структуре у Го-у поставља вредности на фалсе по подразумеваној вредности, тако да ако не иницијализујете поље, оно ће бити процењено на фалсе. Приликом иницијализације структуре и прослеђивања променљиве као података шаблону, само поља која процењују вредност праве узрокују појаву излаза.
избор := ТруеФалсер {
Тачно је: истинито,
ИсФалсе: лажно,
}
ерр := тмплт. Извршити (писац, избор)
Коначни излаз укључује само један пасус, јер само поље исТруе процењује истинито:
Не морате да користите шаблоне за своје позадинске апликације
Шаблон није услов за ваше Го апликације. Можете користити друге приступе као што је уграђивање структуре ваше странице у ваш програм, заједно са његовом логиком и другим понашањем.
Међутим, на крају ћете направити више посла за себе. Го предложак помаже у спречавању КССС напада и олакшава одвајање рада на структури странице од позадинске логике.