Go Frame开发框架
v1.15.3 官方版- 软件大小:1.28 MB
- 更新日期:2021-02-05 15:01
- 软件语言:简体中文
- 软件类别:编程工具
- 软件授权:免费版
- 软件官网:待审核
- 适用平台:WinXP, Win7, Win8, Win10, WinAll
- 软件厂商:
软件介绍 人气软件 下载地址
Go
Frame是一款GO开发框架,如果你会GO语言就可以通过这款软件开发新的程序,软件提供很多开发工具,支持init项目创建、build交叉编译、gen代码生成等工具,可以快速在软件创建新的项目编辑代码,软件作为框架使用,为喜欢通过GO设计新开发项目的用户提供更多帮助,软件具有多个核心组件,支持对象管理、调试模式、配置管理、资源管理、错误处理、日志组件、类型转换、数据校验、缓存管理等组件,通过这些组件就可以立即部署系统功能模块,可以设计用户界面模块,为用户开发新程序提供帮助,适合会GO的开发人员使用!
软件功能
GF(Go Frame)是一款模块化、高性能、企业级的Go基础开发框架。
实现了比较完善的基础设施建设以及开发工具链,提供了常用的基础开发模块,
如:缓存、日志、队列、数组、集合、容器、定时器、命令行、内存锁、对象池、配置管理、资源管理、数据校验、数据编码、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信等等。
并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、模板引擎等等,
支持热重启、热更新、域名绑定、TLS/HTTPS、Rewrite等特性。
如果您初识Go语言,您可以将`GoFrame`类似于`PHP`中的`Laravel`, `Java`中的`SpringBoot`或者`Python`中的`Django`。
软件特色
模块化、松耦合设计;
模块丰富、开箱即用;
简便易用、易于维护;
高代码质量、高单元测试覆盖率;
社区活跃,大牛谦逊低调脾气好;
详尽的开发文档及示例;
完善的本地中文化支持;
设计为团队及企业使用;
官方教程
安装
go get -u -v github.com/gogf/gf
推荐使用 go.mod:
require github.com/gogf/gf latest
限制
golang版本 >= 1.11
架构
开发工具
从GF v1.9版本开始提供了gf命令行开发辅助工具,将会随着框架发展不断完善,作为未来框架发展的一个重要组成部分,我们推荐通过下载安装预编译的二进制使用。工具安装成功后,可以通过gf或者gf -h查看所有支持的命令。复杂的命令可以通过gf help COMMAND或者gf COMMAND -h查看更详细的使用帮助信息,例如:gf help gen、gf gen -h。
工具运行初始化时将会自动打开Go Modules特性并设置反向代理地址为 https://goproxy.cn。
当前帮助文档以gf cli v0.7.5版本为例进行简单的介绍,详细的介绍信息请查看命令行帮助信息。本章内容信息可能会有滞后,最新的具体详细介绍请查看工具帮助信息。
version 版本查看
使用方式:
gf -v
gf version
用以查看当前gf命令行工具编译时的版本信息。例如:
init 项目创建
使用方式:gf init NAME
我们可以使用init命令在当前目录生成一个示例的GF空框架项目,并可给定项目名称参数。生成的项目目录结构仅供参考,根据业务项目具体情况可自行调整。生成的目录结构请参考 新建项目 章节。
GF框架开发推荐统一使用官方的go module特性进行依赖包管理,因此空项目根目录下也有一个go.mod文件。
新建项目
为方便小伙伴们快速使用GF框架创建一个基本的项目,我们这里以简单的开发示例,使用GF框架来创建一个简单的API服务项目,该项目实现以下几个示例接口:
1、用户注册
2、用户登录
3、用户注销
4、登录状态判断
5、账号/昵称唯一性校验
包含以下功能特性:
1、允许跨域访问
2、包含权限校验
源码仓库
由于文档的粘贴的代码可能会滞后于仓库代码,建议通过下载该仓库代码查看示例。后续章节主要对其中的主要代码做介绍。
各位可以通过 开始运行 章节末尾示例的curl命令行方式进行测试,也可以通过/document/postman目录的postman配置进行测试。
项目结构
如果是Package源码包项目,开发者可随意定义目录结构。
如果是业务类型项目,GoFrame官方推荐的Go项目目录结构如下:
在实践中,小伙伴们可以根据实际情况增删目录。
注意:如果需要提供静态服务,那么所有静态文件都需要存放到public目录下,仅有该目录下的静态文件才能被外部直接访问。不推荐将程序当前运行目录加入到静态服务中。
分层设计
GF官方推荐的代码分层设计。
控制器
控制器负责接收并响应客户端的输入与输出,包括对输入参数的过滤、转换、校验,对输出数据结构的维护,并调用service实现业务逻辑处理。
控制器代码位于/app/api。
业务逻辑
业务逻辑是需要封装的,特别是一些可复用的业务逻辑,并被控制器调用实现业务逻辑处理。
逻辑封装的代码位于/app/service。
数据访问
数据访问代码层负责所有的数据集合(数据表)访问收口,将数据集合按照面向对象的方式进行封装。
数据访问的代码位于/app/dao。
模型定义
模型定义代码层负责维护所有的数据结构定义,包括所有的输入输出数据结构定义。
模型定义代码层中仅包含数据结构定义,不包含任何的方法定义。
模型定义的代码位于/app/model。
模板解析
模板解析是可选的,在实践中往往可以采用MVVM的模式,例如使用vue/react等框架实现模板解析。如果使用经典的模板解析,可以通过GF框架强大的模板引擎实现模板解析。
模板文件的存放于/template。
数据库设计
我们创建一个简单的用户表来做演示。
https://github.com/gogf/gf-demos/blob/master/document/sql/create.sql
为简化示例项目的接口实现复杂度,这里的password没有做任何加密处理,明文存放密码数据。
包名约定
根据官方《Effective Go》建议,包名尽量采用言简意赅的名称(short, concise, evocative)。并且推荐通过不同的import路径来区分相同包名的包引入。
包名设计
如果使用GF开发业务项目,那么基本可以不用考虑包名设计的问题,因为从v1.15版本开始,GF官方推荐使用面向对象的封装方式,项目中app目录下往往只存在api, dao, model, service 四个包名,每个包内部通过对象的形式来封装具体的数据模型或者业务逻辑。
控制器实现
结构化约束
控制器的输入与输出使用了结构体定义进行约束,结构化维护输入输出数据结构是推荐的方式。例如:
虽然只有一个参数,也采用了结构化定义,我们直接查看该结构体便可得知该接口的输入参数格式,而不用进入代码中去分析,从而极大提高维护效率。
结构体转换
结构体转换可以使用GetStruct或者Parse方法,其中Parse同时可以执行数据校验。结构体转换方法的参数都可以给定一个结构体的空指针,内部会自动初始化结构体对象,转换失败(例如提交参数不存在)不会执行初始化。例如:
数据校验
客户端提交的数据都是不可信的,必须要做数据校验。
可以通过给结构体绑定v的标签进行设定校验规则以及定义的错误提示。例如:
数据传参
控制器负责接收、转换、校验、处理请求参数后,将所需的参数传递给调用的service对象方法,而不是直接将Request对象传递给service。例如:
上下文变量
上下文变量
转至元数据结尾由 郭强创建, 最后修改于十二月 25, 2020转至元数据起始上下文变量指的是标准库的context.Context,是一个接口对象。主要用于goroutine的异步IO控制,以及流程变量传递。
在Go的HTTP请求流程中,不存在”全局变量”获取请求参数的方式,只有将上下文context变量传递到后续流程的方法中,而context上下文变量即包含了所有需要传递的共享变量。并且该context中的共享变量应当是事先约定的,并且往往存储为对象指针形式。
结构定义
在该示例中,我们的上下文变量的数据结构定义为:
https://github.com/gogf/gf-demos/blob/master/app/model/context.go
逻辑封装
由于该上下文对象也是和业务逻辑相关的,因此我们需要通过service对象将上下文变量封装起来再供其他模块使用。
https://github.com/gogf/gf-demos/blob/master/app/service/context.go
上下文变量注入
上下文的变量必须在请求一开始便注入到请求流程中,以便于其他方法调用,因此我们使用中间件来实现。
https://github.com/gogf/gf-demos/blob/168e049e58528413cd248c05c729840e552ece94/app/service/middleware.go#L15
上下文变量使用
约定俗成的,方法的第一个参数往往预留给context.Context类型参数使用,以便接受上下文变量,特别是service层的方法。例如:
https://github.com/gogf/gf-demos/blob/master/app/service/user.go
模块介绍
1、核心模块
`GoFrame`提供了一些基础的、常用的模块,简单、易用和轻量级,并保持极少的外部依赖,这些模块由`gf`主仓库细致维护。
2、社区模块
社区模块主要由社区贡献并维护,大部分也是由`gf`主仓库的贡献者提供及维护,存放于`gogf`空间下,与`gf`主仓库处于同一级别。有的社区模块是从`gf`主仓库中剥离出来单独维护的模块,这些模块并不是特别常用,或者对外部依赖较重。
人气软件
-
redis desktop manager2020.1中文 32.52 MB
/简体中文 -
s7 200 smart编程软件 187 MB
/简体中文 -
GX Works 2(三菱PLC编程软件) 487 MB
/简体中文 -
CIMCO Edit V8中文 248 MB
/简体中文 -
JetBrains DataGrip 353 MB
/英文 -
Dev C++下载 (TDM-GCC) 83.52 MB
/简体中文 -
TouchWin编辑工具(信捷触摸屏编程软件) 55.69 MB
/简体中文 -
信捷PLC编程工具软件 14.4 MB
/简体中文 -
TLauncher(Minecraft游戏启动器) 16.95 MB
/英文 -
Ardublock中文版(Arduino图形化编程软件) 2.65 MB
/简体中文