欢迎来到神奇下载!我们唯一域名是:www.sqxzz.com

Go Frame开发框架 官方版 v1.15.3

更新时间:2022-06-01 20:59:24

软件介绍

Go Frame是一款GO开发框架,如果你会GO语言就可以通过这款软件开发新的程序,软件提供很多开发工具,支持init项目创建、build交叉编译、gen代码生成等工具,可以快速在软件创建新的项目编辑代码,软件作为框架使用,为喜欢通过GO设计新开发项目的用户提供更多帮助,软件具有多个核心组件,支持对象管理、调试模式、配置管理、资源管理、错误处理、志组件、类型转换、数据校验、缓存管理等组件,通过这些组件就可以立即部署系统功能模块,可以设计用户界面模块,为用户开发新程序提供帮助,适合会GO的开发人员使用!

Go Frame开发框架软件功能

GF(Go Frame)是一款模块化、高能、企业级的Go基开发框架。

实现了比较完善的基设施建设以及开发工具链,提供了常用的基开发模块,

如:缓存、志、队列、数组、、容器、定时器、命令行、内存锁、对象池、配置管理、资源管理、数据校验、数据编码、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信等等。

并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、模板引擎等等,

支持热重启、热更新、域名绑定、TLS/HTTPS、Rewte等特。

如果您初识Go语言,您可以将`GoFrame`类似于`PHP`中的`Laravel`, `Java`中的`SpngBoot`或者`Python`中的`Django`。

Go Frame开发框架软件特色

模块化、松耦合设计;

模块丰富、开箱即用;

简便易用、易于;

高代码质量、高单元测试覆盖率;

社区活跃,大牛谦逊低调脾气好;

详尽的开发文档及示例;

完善的本地中文化支持;

设计为团队及企业使用;

Go Frame开发框架教程

安装

go get -u -v github.com/gogf/gf

推荐使用 go.mod:

require github.com/gogf/gf latest

限制

golang版本 >= 1.11

架构

Go Frame开发框架开发工具

从GF v1.9版本开始提供了gf命令行开发辅助工具,将会随着框架发展不断完善,作为未来框架发展的一个重要组成部分,我们推荐通过下载安装预编译的二进制使用。工具安装成功后,可以通过gf或者gf -h查看所有支持的命令。复杂的命令可以通过gf COMMAND或者gf COMMAND -h查看更详细的使用帮助,例如:gf gen、gf gen -h。

工具运行初始化时将会自动打开Go Modules特并设置反向代理地址为 https://gopxy.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推荐的代码分层设计。

控制器

控制器负责接收并响应客户端的输入与输出,包括对输入参数的过滤、转换、校验,对输出数据结构的,并调用实现业务逻辑处理。

控制器代码位于/app/api。

业务逻辑

业务逻辑是需要封装的,特别是一些可复用的业务逻辑,并被控制器调用实现业务逻辑处理。

逻辑封装的代码位于/app/。

数据访问

数据访问代码层负责所有的数据(数据表)访问收口,将数据按照面向对象的方式进行封装。

数据访问的代码位于/app/dao。

模型定义

模型定义代码层负责所有的数据结构定义,包括所有的输入输出数据结构定义。

模型定义代码层中仅包含数据结构定义,不包含任何的方法定义。

模型定义的代码位于/app/model。

模板解析

模板解析是可选的,在实践中往往可以采用MVVM的模式,例如使用vue/react等框架实现模板解析。如果使用经典的模板解析,可以通过GF框架强大的模板引擎实现模板解析。

模板文件的存放于/template。

数据库设计

我们创建一个简单的用户表来做演示。

https://github.com/gogf/gf-demos/blob/master/document/sql/.sql

为简化示例项目的接口实现复杂度,这里的password没有做任何加密处理,明文存放密码数据。

包名约定

根据《Effective Go》建议,包名尽量采用言简意赅的名称(short, concise, evocative)。并且推荐通过不同的import路径来区分相同包名的包引入。

包名设计

如果使用GF开发业务项目,那么基本可以不用考虑包名设计的问题,因为从v1.15版本开始,GF推荐使用面向对象的封装方式,项目中app目录下往往只存在api, dao, model, 四个包名,每个包内部通过对象的形式来封装具体的数据模型或者业务逻辑。

控制器实现

结构化约束

控制器的输入与输出使用了结构体定义进行约束,结构化输入输出数据结构是推荐的方式。例如:

虽然只有一个参数,也采用了结构化定义,我们直接查看该结构体便可得知该接口的输入参数格式,而不用进入代码中去分析,从而极大提高效率。

结构体转换

结构体转换可以使用GetStruct或者Parse方法,其中Parse同时可以执行数据校验。结构体转换方法的参数都可以给定一个结构体的空指针,内部会自动初始化结构体对象,转换失败(例如提交参数不存在)不会执行初始化。例如:

数据校验

客户端提交的数据都是不可信的,必须要做数据校验。

可以通过给结构体绑定v的标签进行设定校验规则以及定义的错误提示。例如:

数据传参

控制器负责接收、转换、校验、处理请求参数后,将所需的参数传递给调用的对象方法,而不是直接将Request对象传递给。例如:

上下文变量

上下文变量

转至元数据结尾由 郭强创建, 最后修改于十二月 25, 2020转至元数据起始上下文变量指的是标准库的context.Context,是一个接口对象。主要用于goutine的异步IO控制,以及流程变量传递。

在Go的HTTP请求流程中,不存在”全局变量”获取请求参数的方式,只有将上下文context变量传递到后续流程的方法中,而context上下文变量即包含了所有需要传递的共享变量。并且该context中的共享变量应当是事先约定的,并且往往存储为对象指针形式。

结构定义

在该示例中,我们的上下文变量的数据结构定义为:

逻辑封装

由于该上下文对象也是和业务逻辑相关的,因此我们需要通过对象将上下文变量封装起来再供其他模块使用。

上下文变量注入

上下文的变量必须在请求一开始便注入到请求流程中,以便于其他方法调用,因此我们使用中间件来实现。

上下文变量使用

约定俗成的,方法的第一个参数往往预留给context.Context类型参数使用,以便接受上下文变量,特别是层的方法。

模块介绍

1、核心模块

`GoFrame`提供了一些基的、常用的模块,简单、易用和轻量级,并保持极少的外部依赖,这些模块由`gf`主仓库细致。

2、社区模块

社区模块主要由社区贡献并,大部分也是由`gf`主仓库的贡献者提供及,存放于`gogf`空间下,与`gf`主仓库处于同一级别。有的社区模块是从`gf`主仓库中剥离出来单独的模块,这些模块并不是特别常用,或者对外部依赖较重。

近期热门

1
UEStudio增强版是 UltraEdit 的开发环境版本,软件功能非常强大,界面简洁明晰、作方便快捷,设计 […]
2
DLL函数查看器是一款易于使用的dll函数查看工具。软件具备了简单直观的用户界面,拖动dll文件到窗口,或者双 […]
3
精易csharp编程助手也就是精易c#编程助手,是一款辅助c#快速开发的工具,主要功能模块包括常用代码、网页提 […]
4
Alactty是一款跨平台的OpenGL终端仿真器,可以通过这款软件快速运行脚本,添加了对Windows的支持 […]
5
VSCodium(VScode二进制版本)免费下载是编程开发分类下一款电脑软件,神奇下载小编给各位带来了VSC […]
6
Dxpress版是一款优秀实用的控件库软件。Dxpress19中文版软件能够帮助用户设计具有图形和高级和高级功 […]
7
Kratos提供非常多的服务框架,可以帮助用户在搭建网站和应用的时候快速配置通讯,配置HTTP服务,配置数据分 […]
8
CDS是一款自动化软件,您可以在软件上建立多种自动化作业方式,有效提升企业工作效率,优化复杂的工作流程,您可以 […]
9
夜神助手全称是夜神模拟器连接助手,因为作者在安卓逆向学习过程中,经常使用夜神模拟器调试程序经常打开很多命令行窗 […]
10
MyBB是一款论坛开发软件,如果你需要设计论坛就可以直接通过这款软件部署到使用,不需要自己原创代码就可以立即创 […]

声明:本站所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助 转载需标注!

Copyright © 2018-2023 All Rights Reserved. 神奇下载网站备案编号:苏ICP备12036411号

抵制不良游戏软件,拒绝盗版。 注意自我保护,谨防受骗上当。 适度娱乐益脑,沉迷伤身。合理安排时间,享受健康生活。

共 25 次查询,耗时 0.879 秒