返回顶部
首页 > 资讯 > 精选 >如何在go模板内部分配go模板的变量?
  • 640
分享到

如何在go模板内部分配go模板的变量?

2024-02-05 22:02:48 640人浏览 安东尼
摘要

问题内容 我刚刚开始使用 golang 和模板系统来重新开发我的网络服务器。现在我只想为每个网站编写常量变量,但我什至不知道我在搜索什么。希望有人能帮忙。 我有这个 Gohtml 文件

问题内容

我刚刚开始使用 golang 和模板系统来重新开发我的网络服务器。现在我只想为每个网站编写常量变量,但我什至不知道我在搜索什么。希望有人能帮忙。

我有这个 Gohtml 文件作为每个 html 文件的“基础”

    {{define "topdoc"}}
    
    
    
        
        
        
        {{.title}}
        
        
    
    
{{end}}

{{define "botdoc"}}
    
    
    
{{end}}

我想更改标题,然后以相同的方式更改例如元数据描述和类似的内容。

{{template "topdoc" .}}
{{template "navbar"}}
home

{{template "botdoc"}}

导航栏在另一个文件中定义。

现在我想在这个文件中给出变量

{{template "topdoc" .title="home" .otherparam="checking..."}}
{{template "navbar"}}
home

{{template "botdoc"}}

也许有人可以帮助我解决这个非常琐碎的问题。

当我使用这个方法时

{{define "title"}}home{{end}}
{{template "topdoc"}}
{{template "navbar"}}
home

{{template "botdoc"}}

首先加载基本文件,它显示一个空白网站。

我像这样加载模板文件:

func main() {
    r := gin.Default()

    tmpl = make(map[string]*template.Template)

    // Load templates files
    templateFiles := []string{}

    fmt.Println("Loading templates...")
    // Walk through the "templates" folder and all its subdirectories
    nerr := filepath.Walk("main/WEB/assets/templates", func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }

        // Check if the file is an HTML templates
        if !info.IsDir() && strings.HasSuffix(info.Name(), ".gohtml") {
            // Replace backslashes with forward slashes (for windows compatibility)
            templateName := strings.Replace(path, "\\", "/", -1)

            // Parse the file and add it to the "tmpl" map
            templateFiles = append(templateFiles, path)

            //console log
            fmt.Print(templateName + " ")
        }
        return nil
    })

    if nerr != nil {
        panic(nerr)
    }

    fmt.Println("\n\nLoading sites...")

    // Walk through the "public" folder and all its subdirectories
    err := filepath.Walk("main/web/public", func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }

        // Check if the file is an HTML templates
        if !info.IsDir() && strings.HasSuffix(info.Name(), ".gohtml") {
            // Get the directory path (relative to the "public" folder)
            relPath, err := filepath.Rel("main/web/public", filepath.Dir(path))
            if err != nil {
                return err
            }
            // Replace backslashes with forward slashes (for Windows compatibility)
            templateName := strings.Replace(relPath, "\\", "/", -1)

            // Parse the file and add it to the "tmpl" map
            parsing := []string{}
            parsing = append(parsing, templateFiles...)
            parsing = append(parsing, path)

            fmt.Println(parsing)

            tmpl[templateName] = template.Must(template.ParseFiles(parsing...))

            // If the path is empty, default to "index"
            if templateName == "." {
                templateName = ""
            }

            // ReGISter the templates with the appropriate route
            r.GET("/"+templateName, handler)
        }

        return nil
    })
    if err != nil {
        panic(err)
    }

    r.Run()
}


正确答案


这通常是使用模板组合来实现的。在您的“topdoc”模板中,只需调用其他模板即可:

{{define "topdoc"}}
...
{{template "title"}}
...
{{end}}

并将“标题”模板定义为

{{define "title"}}default title{{end}}

然后,您可以通过在单独的文件中重新定义“标题”模板来覆盖它:

{{define "title"}}New title{{end}}
{{define "someTemplate}}
{{template "topdoc"}}
...
{{end}}

您必须编写这些不同的模板文件,以便首先加载“topdoc”(定义默认的“标题”),然后加载重新定义“标题”的模板。

以上就是如何在go模板内部分配go模板的变量?的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何在go模板内部分配go模板的变量?

本文链接: https://lsjlt.com/news/561115.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在go模板内部分配go模板的变量?
    问题内容 我刚刚开始使用 golang 和模板系统来重新开发我的网络服务器。现在我只想为每个网站编写常量变量,但我什至不知道我在搜索什么。希望有人能帮忙。 我有这个 gohtml 文件...
    99+
    2024-02-05
  • 将执行文本/模板模板的结果分配给变量
    Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《将执行文本/模板模板的结果分配给变量》带大家来了解一下##content_title#...
    99+
    2024-04-04
  • php如何替换模板变量
    这篇文章给大家分享的是有关php如何替换模板变量的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php替换模板变量的方法:首先用fopen()函数打开文件;然后通过fread函数读取文件;最后使用str_repla...
    99+
    2023-06-07
  • 无法使用 Go 的“文本/模板”库导入变量
    偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《无法使用 Go 的“文本/模板”库导入变量》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我...
    99+
    2024-04-04
  • 如何在Go模板中传入“途中创建”的地图
    问题内容 我想在 Go 模板中制作类似 UI 组件 100% 可重用的东西,但我不知道是否可以做到。所以我正在尝试做下一步: {{define "components/menu-but...
    99+
    2024-02-06
  • Angular模板引用变量及其作用域的示例分析
    小编给大家分享一下Angular模板引用变量及其作用域的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Angular模板引用变量如果你曾经参与过Angular项目的开发,那么你可能...
    99+
    2024-04-02
  • 【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)
    这篇文章,主要介绍如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档。 目录 一、导出Word文档 1.1、基础知识 1.2、制作模板文件 1.3、代码实现 (1)引入依赖 (2)创建Freemarke...
    99+
    2023-10-23
    word Java导出Word Freemarker Word文档导出功能 根据模板文件导出Word文档
  • 如何配置pbootcms模板的伪静态,教程分享给大家
    系列文章目录 pbootcms模板教程以及相关问题解决办法 第一章 如何配置pbootcms模板的伪静态 前言 很多人在使用pb的模板中会遇到各种各样的问题,现在博主给大家来解答这些问题。 一、如何配置pbootcms模板的伪静态?...
    99+
    2023-08-31
    php 服务器 nginx
  • 如何进行C++模板显式具体化的分析
    如何进行C++模板显式具体化的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。模板函数虽然非常好用,但是也存在一些问题。比如有的操作并不是对所有类型都适用的,针对这种情况C+...
    99+
    2023-06-22
  • 织梦模板正则批量替换文章内容内链变成绝对路径的方法
    织梦文章内链绝对路径的跳过,相对路径的替换 替换之前 <p><strong><a href="/html/1.html">HTML</a>文档是由&...
    99+
    2022-06-12
    织梦 正则 批量 替换 绝对路径
  • DEDE模板中如何运行php脚本和变量在需要操作数据库字段时
    在使用dede模板的时候,经常会需要直接对dede数据库的底层字段进行处理,如果dede中没有相应的函数的时候,往往就需要我们想办法来处理了。 举例:我想取出数据表addonimages中的某一条记录的typeid这个字...
    99+
    2022-06-12
    DEDE模板 php脚本 php变量
  • 如何在Pycharm中制作自己的爬虫代码模板
    目录写作背景爬虫代码在 Pycharm 中设置代码模板写作背景 最近本菜鸡有几个网站想要爬,每个爬虫的代码不一样,但 有某种联系,可以抽出一部分通用的代码制成模板,减少代码工作量,于...
    99+
    2024-04-02
  • python如何基于OpenCV模板匹配识别图片中的数字
    小编给大家分享一下python如何基于OpenCV模板匹配识别图片中的数字,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!程序目标单个数字模板:(这些单个模板是我自...
    99+
    2023-06-14
  • 如何在C++项目中实现模板中的非类型参数
    这篇文章给大家介绍如何在C++项目中实现模板中的非类型参数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。非类型模板参看,顾名思义,模板参数不限定于类型,普通值也可作为模板参数。在基于类型的模板中,模板实例化时所依赖的是...
    99+
    2023-06-06
  • Go Path学习笔记:如何在Linux系统中配置环境变量?
    Go语言是Google开发的一种编程语言,它的诞生主要是为了解决C++和Java在开发大型系统时所面临的问题。Go语言在效率、易用性、并发性等方面都有着优异的表现,因此在近年来逐渐成为了一种热门的编程语言。在使用Go语言进行开发时,我们需...
    99+
    2023-07-05
    path 学习笔记 linux
  • dedecsm模板中首页如何实现分页的三种方法比较分析
    织梦dedecsm模板中首页如何实现分页的三种方法有时在做织梦模板的时候需要实现首页分页效果,但是织梦本身首页是不带分页功能的,那如何实现织梦首页分页呢?有3种办法可以实现:一、用arclist标签+Ajax实现织梦首页...
    99+
    2022-06-12
    首页 分页
  • 织梦模板用{dede:sql}标签如何实现分页的示例代码
    近研究了一下织梦cms系统,看到一篇关于sql标签调用数据列表如何翻页的文章,感觉不错,贴出来大家分享一下。相信很多使用dedecms的朋友在网上查找关于dede:sql标签进行分页的解决方案时都不尽如人意,尤其是在列表...
    99+
    2022-06-12
    织梦 {dede:sql} 分页
  • 如何在 go 中声明自定义类型(如 time.Date)的变量?
    在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天编程网就整理分享《如何在 go 中声明自定义类型(如 tim...
    99+
    2024-04-05
  • Go:如何查看模块内定义的包的依赖关系图?
    Go语言作为一门流行的编程语言,具有强大的模块化特性,使得开发者可以轻松地组织和管理代码。在开发过程中,了解模块之间的依赖关系是非常重要的,它可以帮助我们更好地理解代码结构和功能。那么...
    99+
    2024-02-11
    go语言
  • Node.js在图片模板上如何生成二维码图片并附带底部文字说明
    小编给大家分享一下Node.js在图片模板上如何生成二维码图片并附带底部文字说明,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作