Конфликт между Голангом и AngularJS

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

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

Ответ 1

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

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

Ответ 2

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

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

для более подробной информации:

http://golang.org/pkg/html/template/#Template.Delims

Ответ 3

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

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

Ответ 4

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

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

Пример:

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

Ответ 5

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

Ответ 6

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


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

Ответ 7

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