知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。
知识分享系列目前包含Java、Golang、Linux、Docker等等。
日常我们使用golang开发项目时经常需要使用一些基础组件,每次新建较为繁琐,现有市面上的感觉不太适合自己,因此决定自己搭建一套,同时开源出来分享给大家使用,欢迎大家提出各种需求。 下面我们开始对于该框架进行继续完善,本节我们要完成的需求是:
go get -u github.com/gin-gonic/gin
package web
import (
"FastDevelopGo/src/base/log"
"FastDevelopGo/src/base/web/router"
"github.com/gin-gonic/gin"
"github.com/spf13/viper"
"go.uber.org/zap"
)
type WebConfig struct {
Host string `json:"host,omitempty"`
Port string `json:"port,omitempty"`
}
// web配置文件对象,用于全局的配置初始使用
var webConfig WebConfig
func InitGin() {
initGinConfig()
startGin()
}
// 初始web相关的配置文件和对象
func initGinConfig() {
// 初始读取配置文件
if err := viper.UnmarshalKey("web", &webConfig); err != nil {
log.Logger.Error("读取配置文件时发生致命错误:", zap.Error(err))
return
}
}
// 核心启动gin框架函数,主函数
func startGin() {
// 初始化基础配置
r := gin.Default()
// 初始化网关
router.InitRouter()
r.Run(webConfig.Host + ":" + webConfig.Port)
}
package router
func InitRouter() {
//TODO 在这里我们进行初始化各种网关配置
//TODO 初始化默认静态资源
//TODO 初始化默认异常处理网关
//TODO 初始化默认模板目录
}
# 这是一个默认的配置文件
[sys]
conf_type="toml"
conf_dir="conf/app"
conf_name="base"
[log]
level="debug"
encoding="json"
outputPaths=["stdout", "./tmp/logs"]
errorOutputPaths=["stderr"]
[log.initialFields]
foo = "bar"
[log.encoderConfig]
messageKey="message"
levelKey="level"
levelEncoder="lowercase"
[web]
host = "0.0.0.0"
port = "8080"
[GIN-debug] Listening and serving HTTP on 0.0.0.0:8080
下一步我准备在其中增加相关初始的异常处理和静态资源加载,欢迎大家持续关注该框架发展。
注: 这个框架我的初步想法时后续增加可视化页面、代码快速生成模块、项目框架快速生成模块等等,有其他需求想法的小伙伴欢迎在评论区留言或直接到代码仓库中提出宝贵的issue
欢迎大家积极start,大家的关注是我最大的动力。