gocore-v2框架發佈-集成腳手架能力

在這裏插入圖片描述

官方文檔地址-持續更新中

介紹

gocore是一款高度集成的開發框架和腳手架,支持api、rpc、job、task等開發方式,並且集成各類主流開源庫和中間件融入最佳實踐,最終實現簡化流程、提高效率、統一規範。

特性

  • 底層基於主流框架gin、gorm、viper、zap等進行封裝整合
  • 提供腳手架gocore工具快速初始化項目結構、接口參數路由、數據庫模型(包含逆向生成status)
  • 支持多環境多套配置文件並且和nacos配置中心打通,支持熱更新等特性
  • 提供簽名、加密、文件、郵件、隨機數、鏈路追蹤、時間、日誌等基礎工具
  • 無侵入式理念讓開發精力集中在業務層
  • 通過Docker、K8S、istio等體系下建立的研發流程環境管理策略
  • 封裝常規阿里雲中間件SLS、RocketMQ、nacos
  • 開箱即用

安裝

獲取項目包


> go get -u github.com/sunmi-OS/gocore/v2

  • 腳手架安裝

> go install github.com/sunmi-OS/gocore/v2/tools/gocore@latest

> gocore --version

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

gocore version v1.0.0

快速開始

創建一個示例項目

# 創建工程文件夾
> 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 

工程創建時導入已有數據庫

# 創建工程文件夾
> 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 

配置文件

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: 初始化默認用戶 #一次性任務,常駐任務備註

聯繫我們

歡迎加入gocoreQQ羣:1004023331 一起溝通討論

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章