gin + vue3 搭建博客系统(1)初始化配置文件

119 阅读1分钟

一、使用Goland创建go项目

image.png 使用的是go 1.19版本,使用模块管理依赖

二、搭建项目目录

image.png

三、配置文件 (config.yaml)

app:          
  env: local   # 开发获取生产环境
  port: 9999   # 启动端口号
  app_name: gin-gorm # 服务名称
  app_url: http:localhost #启动地址

创建APP 结构体

type App struct {
   Env     string `mapstructure:"env" json:"env" yaml:"env"`
   Port    string `mapstructure:"port" json:"port" yaml:"port"`
   AppName string `mapstructure:"app_name" json:"app_name" yaml:"app_name"`
   AppUrl  string `mapstructure:"app_url" json:"app_url" yaml:"app_url"`
}

四、使用viper读取配置文件

func InitialConfig() {
   config := "config.yaml"
   if configEnv := os.Getenv("VIPEER_CONFIG"); configEnv != "" {
      config = configEnv
   }
   v := viper.New()
   v.SetConfigFile(config)
   v.SetConfigType("yaml")

   err := v.ReadInConfig()
   if err != nil {
      panic(any(fmt.Errorf("viper读取配置错误,err:%v", err)))
   }
   // 把配置赋值给结构体
   if err = v.Unmarshal(&global.Config);err != nil {
      panic(any(fmt.Errorf("viper配置写入错误,err:%v", err)))
   }

   // 监听配置文件变化
   v.WriteConfig()
   v.OnConfigChange(func(in fsnotify.Event) {
      fmt.Println("配置文件改变",in.Name)
      if err = v.Unmarshal(&global.Config);err != nil {
         panic(any(fmt.Errorf("viper配置写入错误,err:%v", err)))
      }
   })
}

运行项目

在根目录创建main.go 到了初始化配置包

package main

import (
   "fmt"
   
   "gin-blog/bootstrap"
   "gin-blog/global"
)

func main() {
   bootstrap.InitialConfig()
   fmt.Printf("%v", global.Config)
}

使用go run maing.go 命令运行后输出

image.png