golang应用快速搭建框架jotnar

鬼谷阳明 · · 963 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

golang应用快速搭建框架jotnar

博客/golang

jotnar 是一个golang项目快速搭建的框架,它本身是集成其它常用的框架,以达到快速开发的目的

Github项目地址

安装

go get -u github.com/paulyung541/jotnar

初始化

项目里经常会使用命令行来初始化,或者是使用配置文件。我们每新开一些项目,都会用到这些基础的功能,但是每次都去写,难免会枯燥,也不利于项目集成。使用jotnar则将这些烦琐的操作集成进来,能够非常快速地搭建一个项目

配置初始化

将命令行传参或者配置文件的设置加载到内存中,并在任何地方随心所欲地使用它们。

这里提供了2种选择:

  • 命令行传参
  • 使用viper这个优秀的配置文件读取框架

命令行传参方式进行初始化

./application --ip 192.168.0.1 —port 100

golang代码中可以这样初始化和读取

jotnar.New().InitConfigDefaultCommandFlag()
fmt.Println(jotnar.GetVaule(“ip”))

使用viper方式

必须使用-f来指定配置文件参数

./application -f config.toml

你的toml文件如下

[server]
    url = “myserver.com”

代码里通过下面方式初始化和读取

jotnar.New().InitConfigViperToml()
fmt.Println(jotnar.GetViper().GetString(“server.url”))

如果需要单元测试里进行初始化,则用下面的代码指定文件位置

func TestRead(t *testing.T) {
    jotnar.New().InitConfigViperTomlTest(“config.toml”)
    t.Log(jotnar.GetViper().GetString("server.url"))
}

数据库初始化

默认使用了gorm作为数据库连接和orm框架,默认可以配置2个mysql实例,一个进行读,一个进行写,如果只配置了一个,则读写都是这一个

toml配置如下

[mysql.main]
    dsn = “root:@tcp(localhost:3306)/test?charset=utf8&parseTime=True&loc=Local”
    maxIdle = 5
    maxOpen = 10

一个简单的例子

package main

import (
    "fmt"

    "github.com/paulyung541/jotnar"
)

type Student struct {
    ID   uint32
    Name string
    sex  uint8
}

func (*Student) TableName() string {
    return "student"
}

func main() {
    fmt.Println("this is example")

    jotnar.New().
        InitConfigViperToml().
        InitMysql().
        Init(func() {
            fmt.Println("initialization over")
        })

    var stu Student

    if err := jotnar.ReadGorm().First(&stu).Error; err != nil {
        fmt.Println(err.Error())
        return
    }
    fmt.Printf("stu = %+v\n", stu)
}

读写分别使用下面两个函数获取到*gorm.DB

jotnar.ReadGorm()
jotnar.WriteGorm()

未完…


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:鬼谷阳明

查看原文:golang应用快速搭建框架jotnar

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

963 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传