安下载(俺下载):打造放心的绿色安全下载站! 安下载首页|软件分类|最近更新

所在位置: 首页  >  电脑软件  >  编程开发  >  编程工具 > Go Frame开发框架 v1.15.3 官方版
Go Frame开发框架

Go Frame开发框架

 v1.15.3 官方版
  • 软件大小:1.28 MB
  • 更新日期:2021-02-05 15:01
  • 软件语言:简体中文
  • 软件类别:编程工具
  • 软件授权:免费版
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

6
软件评分

本地下载文件大小:1.28 MB

软件介绍 人气软件 下载地址

为您推荐: 编程开发

  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、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

  架构

Go Frame开发框架

  开发工具

  从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版本为例进行简单的介绍,详细的介绍信息请查看命令行帮助信息。本章内容信息可能会有滞后,最新的具体详细介绍请查看工具帮助信息。

Go Frame开发框架

  version 版本查看

  使用方式:

  gf -v

  gf version

  用以查看当前gf命令行工具编译时的版本信息。例如:

Go Frame开发框架

  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项目目录结构如下:

Go Frame开发框架
Go Frame开发框架

  在实践中,小伙伴们可以根据实际情况增删目录。

  注意:如果需要提供静态服务,那么所有静态文件都需要存放到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

Go Frame开发框架

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

  包名约定

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

  包名设计

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

  控制器实现

  结构化约束

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

Go Frame开发框架

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

  结构体转换

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

Go Frame开发框架

  数据校验

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

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

Go Frame开发框架

  数据传参

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

Go Frame开发框架

  上下文变量

  上下文变量

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

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

  结构定义

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

  https://github.com/gogf/gf-demos/blob/master/app/model/context.go

Go Frame开发框架

  逻辑封装

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

  https://github.com/gogf/gf-demos/blob/master/app/service/context.go

Go Frame开发框架

  上下文变量注入

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

  https://github.com/gogf/gf-demos/blob/168e049e58528413cd248c05c729840e552ece94/app/service/middleware.go#L15

Go Frame开发框架

  上下文变量使用

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

  https://github.com/gogf/gf-demos/blob/master/app/service/user.go

Go Frame开发框架

模块介绍

  1、核心模块

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

  2、社区模块

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

人气软件