GoFrame 模板引擎-基本介绍
模板引擎特点 简单、易用、强大; 支持多模板目录搜索; 支持layout模板设计; 支持模板视图对象单例模式; 与配置管理模块原生集成,使用方便; 底层采用了二级缓存设计,性能…
GoFrame 模板引擎-模板配置
视图组件是GoFrame框架核心的组件之一,当然也支持非常方便的配置管理功能。 配置对象 配置对象定义: https://pkg.go.dev/github.com/…
GoFrame 模板引擎-模板标签
模板引擎默认使用了 {{ 和 }} 作为左右闭合标签,开发者可通过gview.SetDelimiters方法设置自定义的模板闭合…
GoFrame 模板函数-基础函数
以下为Golang标准库的一些基础语法和基础函数,GoFrame框架对部分基础函数做了必要的改进。 变量可以使用符号|在函数间传递 {{.value | Func1 | Fu…
GoFrame 模板函数-自定义函数
基本介绍 开发者可以自定义模板函数,全局绑定模板函数到指定的视图对象中。 也可以将自定义的对象赋值给模板,随后通过对象来调用其封装的方法。 使用示例 package main im…
GoFrame 模板引擎-模板变量
变量对象 我们可以在模板中使用自定义的对象,并可在模板中访问对象的属性及调用其方法。 示例: package main import ( “context” “github.com…
GoFrame 模板引擎-模板布局
gview模板引擎支持两种layout模板布局方式: define+ template方式 include模板嵌入方式 这两种方式均支持对模板变量的传入…
GoFrame 模板引擎-XSS处理
默认情况下,模板引擎对所有的变量输出并没有使用HTML转码处理,也就是说,如果开发者处理不好,可能会存在XSS漏洞。 不用担心,GoFrame框架当然已经充分考虑到这点…
GoFrame 链路跟踪-背景知识
一、OpenTelemetry 分布式链路跟踪( Distributed Tracing )的概念最早是由Google提出来的,发展至今技术已…
GoFrame 链路跟踪-准备工作
对OpenTelemetry的概念有初步了解后,我们接着以Jaeger为例来演示如何在程序中使用实现链路追踪。 Jaeger Jaeger是Uber开源的分布式追踪系统,是…
GoFrame 链路跟踪-基本示例
单进程示例 单进程的链路跟踪即进程内方法之间的调用链关系。这种场景的跟踪没有涉及到分布式跟踪,比较简单,以该示例作为我们入门的一个例子吧。示例代码地址:https://github…
GoFrame HTTP示例-Baggage
baggage链路数据传递 示例代码地址:https://github.com/gogf/gf/tree/master/example/trace/http 客户端 package…
GoFrame 链路跟踪-GRPC示例
在本章节中,我们将之前介绍HTTP Client&Server的示例修改为GRPC微服务,并演示如何使用GoFrame框架开发一个简单的GRPC服…
GoFrame 数据库ORM-基本介绍
GoFrame框架的ORM功能由gdb模块实现,用于常用关系型数据库的ORM操作。 gdb数据库引擎底层采用了链接池设计,当链接不再使用时会自动关闭,因此链接对…
GoFrame 数据库ORM-使用配置
配置文件 我们推荐使用配置组件来管理数据库配置,并使用g对象管理模块中的g.DB(“数据库分组名称”)方法获取数据库操作对象,数据库对象将会自动读取…
GoFrame 链式操作-基本介绍
gdb链式操作使用方式简单灵活,是GoFrame框架官方推荐的数据库操作方式。链式操作可以通过数据库对象的db.Model方法或者事务对象的tx.Model方法,基…
GoFrame 链式操作-写入保存
Insert/Replace/Save 这几个链式操作方法用于数据的写入,并且支持自动的单条或者批量的数据写入,区别如下: Insert:使用INSERT INTO…
GoFrame 链式操作-更新删除
为安全性保证、防止误操作,Update及Delete方法必须带有Where条件才能提交执行,否则将会错误返回,错误信息如:there should …
GoFrame 数据查询-Where/WhereOr/WhereNot
ORM组件提供了一些常用的条件查询方法,并且条件方法支持多种数据类型输入。 func (m *Model) Where(where interface{}, args…in…
GoFrame 数据查询-All/One/Array/Value/Count
All/One/Array/Value/Count 这四个方法是数据查询比较常用的方法,方法列表: func (m *Model) All(where …interface{}…