Конфликт шаблона Golang и AngularJS

У меня конфликт с golang html/template и разделителями angularjs. Я знаю, что есть метод, который позволяет изменить разделитель в Go, но он не работает для меня. Может быть, его нужно вызывать перед разбором файлов? Не могли бы вы привести пример, как это должно быть реализовано.

Я нашел много комментариев о том, что AngularJS и Go не должны конфликтовать, потому что их следует использовать отдельно. Как я понимаю, Go следует использовать только для бэкэнда (REST). Вопрос в том, как AngularJS, HTML должен быть загружен? В этом случае я должен иметь серверы?

7 ответов

Решение

Идея AngularJS состоит в том, чтобы весь процесс рендеринга выполнялся на стороне клиента.

Если вы все время придерживаетесь этой логики, вам не требуется никакой визуализации на стороне сервера (например, нет вызова template.Execute) при обслуживании HTML-файлов AngularJS вам просто нужно предоставить статический контент.

Вам нужно изменить используемые символы разделителей, вот и все. У меня была такая же проблема раньше на Beego из-за точных шаблонных символов {{ }} и однажды я изменил это на <<<>>> Мне удалось обслуживать HTML без проблем.

В основном вам нужно вызвать эту функцию, прежде чем выполнять какой-либо анализ: func (t *Template) Delims(left, right string) *Template

Больше подробностей:

http://golang.org/pkg/html/template/

Это сработало для меня.

indexTmpl = template.New("index.html").Delims("<<", ">>")
indexTmpl, _ = indexTmpl.ParseFiles("index.html")

Решение, которое не требует смены разделителей:

использование {{"{{"}} для открытия и {{"}}"}} для закрытия угловых выражений.

Пример:

{{"{{"}} 1 + 2 {{"}}"}}

Вот полный пример использования HTML-шаблонов Golang + Angular.js путем установки разделителей, как упоминалось другими. Причина этого примера в том, что он демонстрирует сквозной опыт, настройку обслуживания статических ресурсов, разбор шаблонов и, конечно, интеграцию angular.js.

Подобный ответ Bijans, но немного более читаемый. Вы можете использовать "printf" в своем шаблоне для печати строкового литерала. Это работает так же для пакета "html / template".


Например: {{ printf "{{}}"}}, https://golang.org/pkg/text/template/

Как сказал Ясир, вы должны изменить разделители. Я мартини с разделителями [[и]], и это работает без проблем.

Другие вопросы по тегам