当前位置: 首页 > news >正文

莱芜雪野湖自驾游攻略怎么优化一个网站关键词

莱芜雪野湖自驾游攻略,怎么优化一个网站关键词,长沙网站建设开发,正规网站制作公司是哪家使用到的第三方库 gin Gin 框架viper 配置文件管理cors 跨域资源请求配置gorm ORM 库zap 日志记录 main 包 Go 语言程序的入口点 main.go 文件 使用 flag 读取配置文件路径参数,默认当前目录下使用 viper 读取 config.ini 配置文件初始化初始数据初始化随机数种子初…

使用到的第三方库

  • gin Gin 框架
  • viper 配置文件管理
  • cors 跨域资源请求配置
  • gorm ORM 库
  • zap 日志记录

main 包

Go 语言程序的入口点

main.go 文件

  1. 使用 flag 读取配置文件路径参数,默认当前目录下
  2. 使用 viper 读取 config.ini 配置文件初始化初始数据
  3. 初始化随机数种子
  4. 初始化数据库
  5. 声明启动程序模式
  6. 配置启动参数并启动服务
package mainimport ("flag""log""math/rand""project/dao""project/routers""time""github.com/gin-gonic/gin""github.com/spf13/viper"
)var (ServiceHost  stringServicePort  string
)func init() {var configPath stringflag.StringVar(&configPath, "config-path", ".", "path to config file")flag.Parse()viper.SetConfigName("config")   // 设置配置文件名为“config”viper.SetConfigType("ini")      // 设置配置文件类型为“ini”viper.AddConfigPath(configPath) // 设置在configPath中查找配置文件if err := viper.ReadInConfig(); err != nil {if _, ok := err.(viper.ConfigFileNotFoundError); ok {// Config file not found; ignore error if desiredlog.Panic("没有找到配置文件")} else {// Config file was found but another error was producedlog.Panic("初始化配置出错", err.Error())}}ServiceHost = viper.GetString("service.host")ServicePort = viper.GetString("service.port")dao.DatabaseUser = viper.GetString("database.user")dao.DatabasePwd = viper.GetString("database.pwd")dao.DatabaseHost = viper.GetString("database.host")dao.DatabasePort = viper.GetString("database.port")dao.DatabaseName = viper.GetString("database.name")
}
func main() {rand.Seed(time.Now().Unix())mode := "release"err := dao.InitMySQL()if err != nil {log.Println("初始化数据失败", err.Error())return}switch mode {case "debug":gin.SetMode(gin.DebugMode)case "release":gin.SetMode(gin.ReleaseMode)case "test":gin.SetMode(gin.TestMode)}r := routers.SetupRouter()s := &http.Server{Addr:         ServiceHost + ":" + ServicePort,Handler:      r,ReadTimeout:  5 * time.Second,WriteTimeout: 10 * time.Second,}err = s.ListenAndServe()if err != nil {panic(err)}
}

dao 包

通常被用于数据存储层的实现,可将底层数据库访问操作封装隐藏细节以简化数据库操作

mysql.go 文件

使用 gorm 初始化 MySQL 数据库连接

package daoimport ("fmt""log""gorm.io/driver/mysql""gorm.io/gorm"
)var (Db           *gorm.DBDatabaseUser stringDatabasePwd  stringDatabaseHost stringDatabasePort stringDatabaseName string
)func InitMySQL() (err error) {dsn := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=Local",DatabaseUser, DatabasePwd, DatabaseHost, DatabasePort, DatabaseName)Db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {log.Panic("连接数据库失败", err.Error())}// 测试数据库连接err = Db.Exec("SELECT 1").Errorif err != nil {log.Panic("数据库连接失败", err.Error())}return
}

routers 包

通常用于路由器配置,这个包中包含的代码需要读取 HTTP 请求并将该请求发送到相应后端的处理程序,然后从处理程序获取响应

routers.go 文件

  1. 创建日志记录器
  2. 初始化 gin 引擎
  3. 配置 cors 跨域请求
  4. 设置一个默认路由,及无请求到路由时返回的数据
package routersimport ("net/http""project/controller""github.com/gin-contrib/cors""github.com/gin-gonic/gin""go.uber.org/zap"
)func SetupRouter() *gin.Engine {// 创建一个生产级别的日志记录器logger, err := zap.NewProduction()if err != nil {panic(err)}// 在函数结束后刷新缓冲区defer logger.Sync()r := gin.Default()// 将 logger 存储在 Gin 的中间件中r.Use(func(c *gin.Context) {c.Set("logger", logger)c.Next()})r.Use(cors.New(cors.Config{AllowOrigins:     []string{"*"},AllowMethods:     []string{"POST, GET, PUT, DELETE, OPTIONS"},AllowHeaders:     []string{"Content-Type, Content-Length"},ExposeHeaders:    []string{"Access-Control-Allow-Headers"},AllowCredentials: true,}))r.GET("/first", controller.FirstHandler)// 下面有两个配置// 如果将前端服务与后端服务同时启动可以设置第一种,将前端打包的文件放到 public 文件夹内// 我这里设置的使用 vite 打包,所以就下面这种设置,可以自行更改// 当直接访问的时候,就相当于请求"/"路由,就会访问 index.html 页面// 设置静态文件服务目录r.Static("public", "public")r.Static("assets", "public/assets")r.GET("/", func(c *gin.Context) {c.File("public/index.html")})r.NoRoute(func(c *gin.Context) {c.File("public/index.html")})// 如果前后端分离模式,可以设置为请求到没有的路由就返回 Not Foundr.NoRoute(func(c *gin.Context) {c.JSON(http.StatusNotFound, gin.H{"msg": "Not Found",})})return r
}

controller 包

负责维护业务逻辑的实现,同时调用 Dao 对象实现数据存储、检索等功能,通常与用户交互并处理相关活动

controller.go 文件

  1. 创建初始默认路由函数,使用 info 级别的日志记录并返回数据
package controllerimport ("net/http""github.com/gin-gonic/gin""go.uber.org/zap"
)func FirstHandler(c *gin.Context) {c.MustGet("logger").(*zap.Logger).Info("这是一个Info日志")c.JSON(http.StatusOK, gin.H{"code": 1,"data": "Hello World","msg":  "成功",})
}

config.ini 文件

外部配置文件

[service]
host=127.0.0.1
port=8000
[database]
user=root
pwd=123456
host=127.0.0.1
port=3306
name=databasename

build.bat 文件

打包脚本,不用每次修改环境变量,不用手动输入打包命令
脚本内容:修改环境变量为 arm64 架构 Linux 系统,打包,还原为 amd64 架构 Windows 系统,我这里使用 Windows 做开发,需要部署到 arm64 架构的 Linux 服务器上,所以这样写,根据需要自行更改

@echo offgo env -w CGO_ENABLED=0
go env -w GOOS=linux
go env -w GOARCH=arm64
go build -ldflags "-w -s"
go env -w CGO_ENABLED=1
go env -w GOOS=windows
go env -w GOARCH=amd64
http://www.fp688.cn/news/141619.html

相关文章:

  • 郑州 网站建设:线上推广有哪些渠道
  • 松江区做网站的公司百度公司官网入口
  • 如何做国外网站的镜像自己做网站
  • 阜阳h5网站建设公司风云榜百度
  • 怎么做免费的网站空间推广软件下载
  • 徐州html5响应式网站建设qq引流推广软件哪个好
  • wordpress怎样显示文章全部列表北京seo优化哪家好
  • 网站首页客服qq做超链接培训机构不退费最有效方式
  • 网站制作内联框谷歌seo建站
  • 海口手机网站建设百度网站首页网址
  • 专业智能建站网站分析影响网站排名的因素
  • 网站建设 熊掌号中国站长之家网站
  • 专业网站建设最便宜营销型网站建设的主要流程包括
  • 宁波网站建设设计制作方案与价格成都网站推广哪家专业
  • 导航网站前端模板我想在百度发布信息
  • ppt免费下载雷锋网站seo推广代理
  • 静态淘宝网站制作模板百度最新秒收录方法2023
  • 一键优化怎么调出来安卓神级系统优化工具
  • 外贸网站国际化怎么做seo分析工具有哪些
  • 34线城市做网站推广游戏推广合作
  • 如何学做网站外包今日新闻事件
  • 建设一个网站花多少钱大数据
  • 电影网站如何做seo百度广告推广怎么做
  • 网站建设 博采网络app推广是做什么的
  • 用上海注册的公司建的网站百度移动端排名软件
  • erp系统要学多久重庆网站seo搜索引擎优化
  • 企业网站管理系统排名加强服务保障满足群众急需i
  • 网站产品后台界面怎么做seo推广服务
  • 内江市网站建设seo站外推广有哪些
  • 我的世界做皮肤网站网络营销推广方式包括哪几种