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.mzph.cn/news/586398.shtml

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

相关文章

mysql_存储过程

举例子 createdefiner root% procedure insert_batch_test(IN START int(10), IN max_num int(10)) BEGINDECLAREi INT DEFAULT 0;SET autocommit 0;REPEATSET i i 1;INSERT INTO test (std, score)VALUES (CEILING(RAND() * 10 100), CEILING(RAND() * 50 50));UNTIL i …

STM32移植LVGL图形库

1、问题1&#xff1a;中文字符keil编译错误 解决方法&#xff1a;在KEIL中Options for Target Flash -> C/C -> Misc Controls添加“--localeenglish”。 问题2&#xff1a;LVGL中显示中文字符 使用 LVGL 官方的在线字体转换工具&#xff1a; Online font converter -…

FFmpeg在线转码(FFmpeg网页版)

FFmpeg在线转码&#xff08;FFmpeg网页版&#xff09; FFmpeg在线转码。FFmpeg网页版。在线音视频转码&#xff0c;格式转换。通过浏览器轻松转换视频和音频格式。 原文链接&#xff1a;https://blog.gcc.ac.cn/post/2023/ffmpeg_online_converter/ FFmpeg在线转码&#xff…

深入浅出理解TensorFlow的padding填充算法

一、参考资料 notes_on_padding_2 二、TensorFlow的padding算法 本文以TensorFlow v2.14.0版本为例&#xff0c;介绍TensorFlow的padding算法。 1. 引言 tf.nn.conv2d and tf.nn.max_pool2d 函数都有padding参数&#xff0c;在执行函数之前&#xff0c;都需要进行填充padd…

力扣(leetcode)第205题同构字符串(Python)

205.同构字符串 题目链接&#xff1a;205.同构字符串 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#xff0c;同时不改变字符…

Git三种方法从远程仓库拉取指定分支

克隆指定分支 git clone -b dev开发分支 https://github.com/521/springboot-rabbitmq.git切换到远程分支 git checkout -b dev开发分支 origin/dev开发分支参考 Git三种方法从远程仓库拉取指定的某一个分支

【MediaPlayerSource】播放器源内部的音视频sender的创建和使用

来看下声网播放中的sender相关组件设计:MediaPlayerSourceDummy 是一个MediaPlayerSourceImpl ,输入音视频帧到 播放器。player_worker_ 线程触发所有操作,由外部传递,与其他组件公用 MediaPlayerSourceDummy(base::IAgoraService* agora_service, utils::worker_type play…

提高C++工程规范性的一些点

1&#xff0c;避免魔数 2&#xff0c;不要返回局部变量的指针或引用 3, 要注意变量的作用域 4&#xff0c;注意平台移植性 例如 尽量避免使用int &#xff0c;long等&#xff0c;因为int在16位系统中占2个字节&#xff0c;long在32位中占4个字节&#xff0c;在64位中占8个字…

数字资产学习笔记

附&#xff1a;2023年数据资源入表白皮书下载&#xff1a; 关注WX公众号&#xff1a; commindtech77&#xff0c; 获得数据资产相关白皮书下载地址 1. 回复关键字&#xff1a;数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字&#xff1a;光大银行 下载 光…

基于 Vue3 和 WebSocket 实现的简单网页聊天应用

首先附上项目介绍,后面详细解释技术细节 1. chat-websocket 一个基于Vue3和WebSocket的简易网络聊天室项目&#xff0c;包括服务端和客户端部分。 项目地址 websocket-chat 下面是项目的主要组成部分和功能&#xff1a; 项目结构 chat-websocket/ |-- server/ # WebSocket 服…

二分查找(非朴素)--在排序数组中查找元素的第一个和最后一个位置

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 本题链接 输入描述 输出描述 算法分析 1.算法一&#xff1a;暴力求解 2.算法二&#xff1a;朴素二分算法 3.算法三&#xff1a;二分查找左右端点 3.1查找左端点 3.1.1细节一&#xff1a;循环条件 3.1.2细节二…

pycharm找回误删的文件和目录

昨天不知道做了什么鬼操作&#xff0c;可能是运行了几个git命令&#xff0c;将项目里面的几个文件删除了&#xff0c;有点懵。 我知道pycharm可以找回文件的历史修改记录&#xff0c;但是对于删除的文件能否恢复&#xff0c;一直没试过。 找到删除文件的目录&#xff0c;点击右…

Spring Cloud Alibaba之大整合

大家好&#xff0c;我是升仔 Spring Cloud Alibaba 组件详细介绍 1. Nacos - 服务发现和配置管理 功能&#xff1a;Nacos 提供服务发现和动态配置服务&#xff0c;支持微服务架构中的服务动态注册和配置管理。 基础配置&#xff1a; spring:cloud:nacos:discovery:server-ad…

PHP特性知识点扫盲 - 上篇

概述 之前在分析thinkphp源码的时候&#xff0c;对依赖注入等等php高级的特性一直想做一个梳理和总结&#xff0c;一直没有时间&#xff0c;好不容易抽一点时间对技术的盲点做一个扫盲和总结。 特性 1.命名空间 命名空间是在PHP5.3中引入&#xff0c;是一个很重要的工具&am…

解决RestHighLevelClient报错missing authentication credentials for REST request

使用ElasticSearch Java API时遇到错误 "missing authentication credentials for REST request" 这是代码: RestHighLevelClient esClient new RestHighLevelClient(RestClient.builder(new HttpHost("localhost",9200,"http")));CreateIndexR…

utf8mb4_0900_ai_ci、utf8mb4_0900_as_ci、utf8mb4_0900_as_cs 这三者有什么区别

utf8mb4_0900_ai_ci, utf8mb4_0900_as_ci, 和 utf8mb4_0900_as_cs 是 MySQL 数据库中使用的字符集和校对规则。这些校对规则决定了如何比较和排序字符数据。它们属于 utf8mb4 字符集&#xff0c;这是 UTF-8 编码的超集&#xff0c;支持最多 4 个字节的字符&#xff0c;能够存储…

【开源】基于JAVA语言的创意工坊双创管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、系统展示四、核心代码4.1 查询项目4.2 移动端新增团队4.3 查询讲座4.4 讲座收藏4.5 小程序登录 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的创意工坊双创管理…

SpringBoot 增量/瘦身部署jar 包

背景 SpringBoot 项目的部署一般采用全量jar 包方式部署相关项目&#xff0c;如果我们对相关的Contrller\Service\Dao\Mapper 层进行相关业务调整就需要重新编译全量jar 包&#xff08;包大小约为200M左右&#xff09;实在太麻烦了。 本文:重点讲解使用SpringBoot 的增量/瘦身…

小型企业网设计-课设实验-爆款实验

可以按照我的配置依次配置&#xff0c;成品打包文件&#xff0c;请&#xff1a;Ensp888 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]un in en Info: Information center is disabled. [Huawei]# [Huawei]sysname SW5 [SW5]# [SW5]vlan batch…

2007-2022年上市公司华证ESG工具变量数据(原始数据+处理代码+结果)

2007-2022年上市公司华证ESG工具变量数据&#xff08;原始数据处理代码结果&#xff09; 1、时间&#xff1a;2007-2022年 2、范围&#xff1a;上市公司 3、指标&#xff1a;证券代码、id、证券简称、year、华证_ESG综合评级、华证_ESG赋值 、华证_ESG综合得分、华证_E评级、…