goframe v2 模板引擎的用法

这里用的goframe v2框架
提醒:下面的import 引入的控制器和api,根据自己实际项目路径

main函数

import ("context""github.com/gogf/gf/v2/net/ghttp""github.com/gzdzh/dzhgo/modules/dzhCms/controller/web""github.com/gogf/gf/v2/frame/g")func main() {s := g.Server()s.Group("/web", func(group *ghttp.RouterGroup) {group.Bind(new(web.CmsIndexController),)})s.Run()
}

中间件全局拦截路由

可以预处理一些事情,例如判断模板不存在的提示语

package middlewareimport ("context""github.com/gogf/gf/v2/frame/g""github.com/gogf/gf/v2/os/gfile"
)func init() {s := g.Server()ctx := context.Background()// 普通静态文件if gfile.Exists("./template") {s.AddStaticPath("/template", "/template")} else {g.Log().Debug(ctx, "/template 不存在,创建一个")if err := gfile.Mkdir("./template"); err != nil {return}}func IndexMiddleware(r *ghttp.Request) {indexHtml := gfile.Exists("./template/index.html")var templateName stringif indexHtml {templateName = "index.html"r.SetParam("templateName", templateName)r.Middleware.Next()return} else {r.Response.Writefln("模板不存在")}}// 预处理首页模版s.BindMiddleware("/web/index", IndexMiddleware)}

接口

package v1import "github.com/gogf/gf/v2/frame/g"type IndexReq struct {g.Meta `path:"/index" method:"GET"`
}

控制器

package webimport ("context""github.com/gzdzh/dzhgo/dzhCore"v1 "github.com/gzdzh/dzhgo/modules/dzhCms/api/v1""github.com/gogf/gf/v2/frame/g""github.com/gogf/gf/v2/os/gview"
)type CmsIndexController struct {}func (c *CmsIndexController) Index(ctx context.Context, req *v1.IndexReq) (res *dzhCore.BaseRes, err error) {view := gview.New()// 设置模板目录err = view.SetPath("template")if err != nil {return nil, err}view.Assigns(map[string]interface{}{"name":  "john","age":   18,"score": 100,})// 渲染模板content, err := view.Parse(ctx, "index.html")if err != nil {panic(err)}var r = g.RequestFromCtx(ctx)r.Response.Writefln(content)return
}

前端模板

根目录template的文件夹放模板文件,中间件那里已经映射到该目录了,如果没有该目录,会自动建一个

模板:/template/index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>模板引擎渲染</title>
</head>
<body><p>Name: {{.name}}</p><p>Age:  {{.age}}</p><p>Score:{{.score}}</p></body>
</html>

浏览器打开 http://localhost:端口/web/index

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310198.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言中的性能考虑和优化

优化您的Go代码以达到最佳性能 性能优化是软件开发的关键方面&#xff0c;无论您使用哪种编程语言。在这篇文章中&#xff0c;我们将探讨Go语言中的性能考虑和优化&#xff0c;Go是一种以其效率而著称的静态类型和编译语言。我们将深入探讨三个关键领域&#xff1a;分析并发代…

YOLOv5改进 | 2023Neck篇 | CCFM轻量级跨尺度特征融合模块(RT-DETR结构改进v5)

一、本文介绍 本文给大家带来的改进机制是轻量级跨尺度特征融合模块CCFM&#xff08;Cross-Scale Feature Fusion Module&#xff09;其主要原理是&#xff1a;将不同尺度的特征通过融合操作整合起来&#xff0c;以增强模型对于尺度变化的适应性和对小尺度对象的检测能力。我将…

利用 IntelliJ IDEA 整合 GitHub 实现项目版本控制与协作管理

目录 前言1 设置GitHub登录账号2 将项目分享到GitHub3 IntelliJ IDEA 中导入Github项目4 往GitHub推送代码4.1 Commit Change&#xff08;提交到本地库&#xff09;4.2 Git -> Repository -> Push&#xff08;推送到远程库&#xff09; 5 拉取远程库代码到本地6 克隆远程…

KG+LLM(一)KnowGPT: Black-Box Knowledge Injection for Large Language Models

论文链接&#xff1a;2023.12-https://arxiv.org/pdf/2312.06185.pdf 1.Background & Motivation 目前生成式的语言模型&#xff0c;如ChatGPT等在通用领域获得了巨大的成功&#xff0c;但在专业领域&#xff0c;由于缺乏相关事实性知识&#xff0c;LLM往往会产生不准确的…

大创项目推荐 深度学习二维码识别

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…

LVS负载均衡配置虚拟引起微服务注册混乱

线上小程序突然报错&#xff0c;查看网关日志&#xff0c;访问下游微服务A时大量报错&#xff1a; 1&#xff09;检查微服务是否未注册。登录eureka页面&#xff0c;发现三个节点均正常注册 三个微服务节点地址分别为&#xff1a;13.9.1.91:8080&#xff0c;13.9.1.92:8080和1…

Javaweb-servlet

一、servlet入门 1.Servlet介绍 (1)什么是Servlet Servlet是Server Applet的简称&#xff0c;是用Java编写的是运行在 Web 服务器上的程序&#xff0c;它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet&#…

【JVM】一篇通关JMM内存模型

JMM内存模型 1. 原子性1-1. 问题分析1-2. 问题解决 2. 可见性2-1. 问题分析2-2. 问题解决 3. 有序性3-1. 问题分析3-2. 问题解决 4. CAS与原子性5. synchronized 优化 1. 原子性 很多人将【java 内存结构】与【java 内存模型】傻傻分不清&#xff0c;【java 内存模型】是 Java…

1、aigc图像相关

aigc图像相关 一、Diffusion webui 在autodl上部署一些问题二、lora和kohyass&#xff08;1&#xff09;角色模型&#xff08;2&#xff09;风格模型&#xff08;3&#xff09;dreambooth&#xff08;4&#xff09;模型合并&#xff08;5&#xff09;Lora加Adetail其他 三、sd …

Zookeeper无法启动,报“Unable to load database on disk”

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 问题描述&#xff1a; 测试环境部署zookeeper的服务器磁盘满了&#xff0c;引起服务异常&#xff0c;将zookeeper进程杀掉之后&…

Apache-ActiveMQ 反序列化漏洞(CVE-2015-5254)复现

CVE-2016-3088 一、环境搭建 Java:jdk8 影响版本 Apache ActiveMQ < 5.13.0 二、用docker搭建漏洞环境 访问一下web界面 然后进入admin目录登录 账号:admin 密码:admin 三、工具准备 cd /opt wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0…

灸哥问答:作为初学者如何学习设计模式?

最近开始把几年前关于设计模式的笔记逐步整理出来&#xff0c;并且分享给大家。讲设计模式的书籍、视频比比皆是。这次我针对每一个设计模式分为五个方面进行介绍&#xff1a; 什么是 X 设计模式&#xff1f;&#xff08;是什么&#xff1f;&#xff09;为什么用 X 设计模式&a…