前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gocore-v2框架发布-集成脚手架能力

gocore-v2框架发布-集成脚手架能力

作者头像
喵了个咪233
发布2021-12-28 13:43:20
3490
发布2021-12-28 13:43:20
举报

官方文档地址-持续更新中

介绍

gocore是一款高度集成的开发框架和脚手架,支持api、rpc、job、task等开发方式,并且集成各类主流开源库和中间件融入最佳实践,最终实现简化流程、提高效率、统一规范。

特性

  • 底层基于主流框架gin、gorm、viper、zap等进行封装整合
  • 提供脚手架gocore工具快速初始化项目结构、接口参数路由、数据库模型(包含逆向生成status)
  • 支持多环境多套配置文件并且和nacos配置中心打通,支持热更新等特性
  • 提供签名、加密、文件、邮件、随机数、链路追踪、时间、日志等基础工具
  • 无侵入式理念让开发精力集中在业务层
  • 通过Docker、K8S、istio等体系下建立的研发流程环境管理策略
  • 封装常规阿里云中间件SLS、RocketMQ、nacos
  • 开箱即用

安装

获取项目包

代码语言:javascript
复制
> go get -u github.com/sunmi-OS/gocore/v2
  • 脚手架安装
代码语言:javascript
复制
> go install github.com/sunmi-OS/gocore/v2/tools/gocore@latest

> gocore --version

   __ _    ___     ___    ___    _ __    ___
  / _` |  / _ \   / __|  / _ \  | '__|  / _ \
 | (_| | | (_) | | (__  | (_) | | |    |  __/
  \__, |  \___/   \___|  \___/  |_|     \___|
  |___/

gocore version v1.0.0

快速开始

创建一个示例项目

代码语言:javascript
复制
# 创建工程文件夹
> mkdir test
> cd test

# 创建yaml配置文件模板gocore.yaml
> gocore conf create 
...
Welcome to GoCore, Configuration file has been generated.

# 修改gocore.yaml模板之后,根据yaml文件创建工程项目
> gocore service create 

   __ _    ___     ___    ___    _ __    ___
  / _` |  / _ \   / __|  / _ \  | '__|  / _ \
 | (_| | | (_) | | (__  | (_) | | |    |  __/
  \__, |  \___/   \___|  \___/  |_|     \___|
  |___/

Run go mod init.
[11/11] Initialize the Request return parameters... 100% [========================================]   
Run go mod tidy .
Run go fmt .
goimports -l -w .
Welcome to GoCore, the project has been initialized.

# 下次迭代增加新的接口或数据表更新代码
> gocore service create 

工程创建时导入已有数据库

代码语言:javascript
复制
# 创建工程文件夹
> mkdir test 
> cd test

# 创建yaml配置文件模板gocore.yaml
> gocore conf create 

# 创建连接数据库的配置文件模板mysql.yaml
> gocore mysql create_yaml 

# 修改mysql.yaml之后,连接数据库将字段合并到gocore.yaml
> gocore mysql add 

# 修改gocore.yaml模板之后,根据yaml文件创建工程项目
> gocore service create 

配置文件

代码语言:javascript
复制
service:
  projectName: demo #项目名称
  version: v1.0.0 #项目版本号
config:
  cNacos:
    env: false #是否使用环境变量
    rocketMQConfig: true #是否使用rocketMQ
  cMysql: #mysql配置
    - name: app #数据库名称
      hotUpdate: false #是否热更新
      models: #model文件
        - name: user #表名称
          auto: false #是否自动建表
          fields: #表字段,gorm规则,一行一个自动
            - column:id;primary_key;type:int AUTO_INCREMENT
            - column:name;type:varchar(100) NOT NULL;default:'';comment:'用户名';unique_index
          comment: 用户表 #表备注
  cRedis: #redis配置
    - name: default #redis名称
      hotUpdate: false #是否热更新
      index:
        db0: 0 #选择第几个db
nacosEnable: true #是否使用nacos
httpApiEnable: true #是否生成接口程序
cronJobEnable: true #是否生成定时任务
jobEnable: true #是否生成常驻任务
httpApis:
  host: 0.0.0.0 #api接口监听ip地址
  port: "80" #api接口监听ip端口
  apis:
    - prefix: /app/user #api接口前缀
      moduleName: user #模块名称
      handle: #api接口
        - name: GetUserInfo #api接口方法名称,完整路由是/app/user/GetUserInfo
          method: Any
          requestParams: #api接口请求参数
            - name: uid #字段名称
              required: true #是否必填
              type: int #字段类型
              comment: 用户ID #字段备注
              validate: required,min=1,max=100000 #validate校验规则
          responseParams: #api响应参数
            - name: detail  #字段名称
              required: true #是否必填
              type: '*User'  #字段类型,非基础字段类型,表示嵌套结构体,引用params中的结构体
              comment: 用户详情 #字段备注
              validate: ""
            - name: list
              required: true
              type: '[]*User'
              comment: 用户列表
              validate: ""
          comment: 获取用户信息
  params:
    User:
      - name: uid
        required: true
        type: int
        comment: 用户ID
        validate: ""
      - name: name
        required: true
        type: string
        comment: 用户名
        validate: ""
cronJobs:
  - spec: '@every 30m' #定时任务规则,参考:github.com/robfig/cron
    job:
      name: SyncUser #定时任务方法名称
      comment: 同步用户 #定时任务备注
jobs:
  - name: InitUser #一次性任务,常驻任务方法名称
    comment: 初始化默认用户 #一次性任务,常驻任务备注
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 特性
  • 安装
    • 获取项目包
    • 快速开始
    • 配置文件
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档