问题标签 [go-html-template]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
385 浏览

string - 文本/模板如何确定地图的“默认文本表示”?

根据Go 标准库中包的文档,(据我所知,这里是相同的)简单地使用管道运算符将吐出任何内容的“默认文本表示”:text/templatehtml/template

{{管道}}

在地图的情况下,你会得到一个很好的打印格式,其中包含键名和所有内容......顺便说一下,这是有效的 JavaScript,因此如果你愿意,它可以很容易地将整个结构传递到你的 JS 代码中。

我的问题是,这个文本表示是如何确定的,更具体地说,我可以加入它吗?我想也许它会检查管道是否是 afmt.Stringer并且我可以给我的地图子类型一个String() string方法,但似乎并非如此。我正在寻找text/template代码,但我似乎错过了它是如何做到这一点的。

如何text/template确定“默认文本表示”?

0 投票
2 回答
3866 浏览

go - 简单,如果不工作去模板

所以我正在做一个简单的 if 检查结构中的布尔值,但它似乎不起作用,它只是停止渲染 HTML。

所以下面的结构是这样的:

现在我有一个 Category 结构的切片,我可以用一个范围来显示它。

Bellow 是一个结构的示例:

我尝试了多种方法,如下所示,但都没有奏效:

0 投票
1 回答
306 浏览

go - 嵌套模板未呈现:Golang

perl 中的应用程序通过 SSI 调用 golang 中的 header 来渲染横幅。在 golang 中,标题模板 {gold_shop_header.shtml} 包含另一个模板 {reputation_level_info.html}。问题是包含的模板的内容没有被呈现。

参考代码:

请提出问题所在。我是golang的新手。包含的模板未呈现。此外,对于主模板,如果我删除 {{ define "Gold Banner"}} 语句,它是否会被渲染,如果我包含此语句,则不会渲染任何内容。没有错误报告。

0 投票
4 回答
17369 浏览

go - 在 golang html/模板中格式化浮点数

我想在文件float64中将 golang 中的值格式化为小数点后 2 位。在文件中,我可以像这样格式化:html/templateindex.html.go

但我不知道如何在模板中格式化它。我正在使用gin-gonic/gin后端框架。任何帮助将不胜感激。谢谢。

0 投票
1 回答
638 浏览

go - 如何使用golang中的不同接口在单个网页中执行多个模板?

请原谅我提出一个看起来很奇怪的问题。我不确定如何在一个声明中准确地陈述我的问题。

我的网页中有三个模板,页眉、布局和页脚。

在模板标题中,我有一个类别下拉菜单,并且我的 go 代码中有一段带有子菜单项的字符串。

并且模板头有以下html代码

所以当我做一个,

它给了我一个漂亮的标题,但我需要做

为主页。布局模板具有以下结构

显然,一起使用两个执行模板语句会给我两个不同的标题。

如果我从模板布局中删除模板标题,视觉输出是完美的,但是当您查看 html 代码时,菜单栏位于“link rel”语句上方(请记住,我在 {{template 上方有“一些 html 代码” header"}} 在布局模板中),这显然不好。

我应该怎么做才能使用它们各自的结构同时执行两个模板?

0 投票
1 回答
3766 浏览

go - Go Template : Use nested struct's field and {{range}} tag together

I have the following nested struct and I would like to iterate them in a template, in a {{range .Foos}} tag.

I'm trying with the following html/template but it can't access the NestedStructID from NestedStruct.

Is there any way with golang templates to do what I'd like to do?

0 投票
1 回答
1379 浏览

javascript - 使用来自 WebSocket 的 JSON 的 Golang 模板范围(for 循环)

我正在使用 Gorilla Websocket 来更新一些 HTML(img src、文本等);我这样做是通过以下方式:

然后我使用 javascript 以这种方式更新 HTML 数据:

然后我以这种方式手动输入了 HTML:

您可以在 HTML 'id' 中看到 0,我应该注意它要长得多,但我试图只取相关部分..

我当然不想手动输入 HTML,因为它会使处理不同的长度变得困难(/不可能)(比如有时我想显示一百个应用程序,有时可能只有 3 个可用,等等。)

我在想这可能可以使用 golang 的 HTML {{range}} 函数来完成,但我不知道如何将它与来自 websockets 的 json 数据集成。

另一个应该可以管理的解决方案是在 JS for 循环中写出所有 HTML ws.onmessage,但我认为如果我学会如何使用 golang 模板包来做到这一点会更好。特别是因为它真的很长而且有许多类/ id的..

我看到它的方式,我需要获取 JSON ( Object.keys(d).length;) 的长度,然后我需要在 {{range}} 内传递这个长度,然后可以使用 {{index}} 通过 JSON 对象进行交互..

..但我一直无法弄清楚如何做到这一点,也许甚至不可能..我将不胜感激任何有关如何做到这一点的帮助..

0 投票
1 回答
3884 浏览

go - 在 Go 中将未转义的 HTML 解析为 HTML 模板

我创建了这个非常简单的测试程序。

然后我有一个 HTML 文件,除了:

fmt.Print 命令打印“ <p><strong>bolded text</strong></p>”,而它被插入到 HTML 页面中:“ &lt;p&gt;&lt;strong&gt;bolded text&lt;/strong&gt;&lt;/p&gt;”。

我相信它与转义的 HTML 有关,但对于展开/渲染包,我将其配置为未转义。我非常感谢任何帮助使测试程序正常工作(最好与展开/渲染一起)。

0 投票
0 回答
43 浏览

templates - 根据模板中的一个值在多个 Go 子模板中进行选择

我是一个新手 Go(和 Go 模板)业余程序员,我看到有人问过这个问题的变体,但从来没有完全以同样的方式,所以又来了……

我正在尝试在不注册任何其他功能的情况下执行以下操作(因此,将自己严格限制在有限的模板语法允许的范围内):

假设我有几个不同的 HTML 片段,每个片段都有自己的模板:A.tpl、、B.tpl等等C.tpl(数量不固定,随着应用程序的增长,它会随着时间的推移而增长;此外,在示例可能暗示的子模板)。

然后我有一个主模板,它设置了常见的页眉、页脚、菜单等,以及围绕每个的必要 HTML,in main.tpl,非常简单,如下所示:

或者,根据调用代码的完成方式,这也可以写成(假设我们将子模板的名称作为值传递给main.tpl):

显然,写(在模板级别)显而易见的是:

但当然这在语法上是无效的,因为template只能使用字符串常量,而不是值/变量作为参数(对吗?)

在模板上强制使用一长串if语句的原因似乎是这种编程风格被认为是“逻辑”,应该从模板中取出,至少在语言的“标准”级别上。Go 程序员不应该认为模板引擎(=表示层)中有任何内在的“逻辑”。当然,我不能讨论什么被认为是逻辑,什么不是(if允许测试特定值是否相等并根据这些值执行不同块的语句对我来说肯定是“逻辑”,但是显然不适合 Go 开发人员)。

几年前也有人问过类似的问题,但对 OP 来说,答案从来都不是很令人满意。基本上,据我了解,有几种选择:

  1. 定义一个新函数,扩展模板代码,最终创建等效的 switch 语句;这至少可以节省一些{{ if ... end }}构造,但是,对我来说,它仍然缺乏单行的简单性和可读性。
  2. 破解(或者,更确切地说,扩展......)整个html/template包以更改模板语法,据称这是由 @Intermernet 在四年前完成的。当然,这是一个有效的练习,但这意味着摆脱标准的 Go 库。如果这是选择,那么那里有很多用于 Go 的模板引擎;我只是不愿意开始使用其中一个,几年后发现它已经过时了,因为作者已经放弃了这个项目。使用不会发生的标准库(至少在 Google 存在并且Ken Thompson还活着的时候)。
  3. 对 Go 端使用的子模板进行所有处理。这自然是可行的,但是(恕我直言)它会导致代码的可读性大大降低。当然,我知道 Go 程序员之间的意识形态之争,在那些热衷于编写“惯用”(但难以理解)代码的人与许多其他有不同编写 Go 代码方式的派系之间。就我个人而言,我坚持最小惊喜KISS原则——我希望我自己的代码即使在我写完十年后也能被理解:)

模板语法是否朝着允许我所描述的方向发展(我很不幸没有找到任何工作示例),还是我仍然坚持复杂化 Go 代码,或者使用不同的非标准 Go 模板引擎完成这个简单的任务?

提前感谢大家的任何见解。我仍然在祈祷,希望我只是 Go 模板语法的新手,并且它实际上允许我想要的,我只需要添加一些更尴尬的符号以允许template关键字接受变量而不是一个字符串常量,到目前为止,我一直没有找到它:-)

0 投票
0 回答
33 浏览

go - 将主题实现为布局

我正在寻找实现Hugo 的 HUGRID 主题作为我博客的附加布局(目前使用Cactus-plus 主题),但我对 Hugo 模板几乎一无所知。我应该尝试将其编码为布局还是可以将HUGRID主题内的cactus-plus主题用于特定页面?