搭建基础架构
目录构造
conf 配置文件logs 日志文件controllers 控制器 承受参数 api的入口datasource 数据库配置models 构造体模型repo 数据库的操作route 注册路由service 业务逻辑代码utils 工具类config.json 配置文件的映射main.go 主程序入口
热启动
改变内容主动重启 速度快
go get -u github.com/kataras/rizlarizla main.go
批改main.go
日志输入到本地
func newLogFile() *os.File { //20060102是语法糖 为yyyyMMdd filename := "logs/" + time.Now().Format("20060102") + ".log" // 关上以以后日期为文件名的文件(不存在则创立文件,存在则追加内容) f, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { panic(err) } return f}
main.go中减少
func main() { f := newLogFile() defer f.Close() app := iris.New() // 在控制台输入同时,会被写入日志文件 app.Logger().SetOutput(io.MultiWriter(f, os.Stdout)) // 不在控制台输入 只写入日志文件 //app.Logger().SetOutput(f) // 设置日志级别 app.Logger().SetLevel("debug") // 增加中间件 app.Use(recover.New()) app.Use(logger.New( logger.Config{ // 是否记录状态码,默认false Status: true, // 是否记录近程IP地址,默认false IP: true, // 是否出现HTTP谓词,默认false Method: true, // 是否记录申请门路,默认true Path: true, // 是否开启查问追加,默认false Query: true, })) ...
注册template
在main.go 的main() 办法中增加如下代码
// 注册动态模版 html := iris.HTML("./web/views/", ".html").Reload(true) // 注册HTML app.RegisterView(html) // 注册动态资源 app.HandleDir("/assets", iris.Dir("./web/assets"))
注册404和500谬误
在main.go 的main() 办法中增加如下代码
app.OnErrorCode(iris.StatusNotFound, notFound) app.OnErrorCode(iris.StatusInternalServerError, internalServerError)
func代码如下
func notFound(ctx iris.Context) { // 呈现 404 的时候,就跳转到 $views_dir/errors/404.html 模板 err := ctx.View("errors/404.html") if err != nil { return }}func internalServerError(ctx iris.Context) { _, err := ctx.WriteString("呈现问题,请重试") if err != nil { return }}
批改app启动形式
// 启动服务 err := app.Run( iris.Addr(":8080"), // 地址 iris.WithCharset("UTF-8"), // 国际化 iris.WithOptimizations, // 主动优化 iris.WithoutServerError(iris.ErrServerClosed), // 疏忽框架谬误 ) // 输入错误信息 if err != nil { log.Println(err.Error()) panic(err.Error()) }
根本配置实现 批改后残缺main.go如下
package mainimport ( "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/middleware/logger" "github.com/kataras/iris/v12/middleware/recover" "io" "log" "myCommunity/route" "myCommunity/utils" "os" "time")func main() { f := newLogFile() defer f.Close() app := iris.New() // 在控制台输入同时,会被写入日志文件 app.Logger().SetOutput(io.MultiWriter(f, os.Stdout)) // 不在控制台输入 只写入日志文件 //app.Logger().SetOutput(f) // 设置日志级别 app.Logger().SetLevel("debug") // 增加中间件 app.Use(recover.New()) app.Use(logger.New( logger.Config{ // 是否记录状态码,默认false Status: true, // 是否记录近程IP地址,默认false IP: true, // 是否出现HTTP谓词,默认false Method: true, // 是否记录申请门路,默认true Path: true, // 是否开启查问追加,默认false Query: true, })) app.OnErrorCode(iris.StatusNotFound, notFound) app.OnErrorCode(iris.StatusInternalServerError, internalServerError) // 注册动态模版 html := iris.HTML("./web/views/", ".html").Reload(true) // 注册HTML app.RegisterView(html) // 注册动态资源 app.HandleDir("/assets", iris.Dir("./web/assets")) // GET办法 返回一个 Welcome app.Handle("GET", "/", func(ctx iris.Context) { ctx.HTML("<h1>Welcome</h1>") }) // 启动服务 err := app.Run( iris.Addr(":8080"), // 地址 iris.WithCharset("UTF-8"), // 国际化 iris.WithOptimizations, // 主动优化 iris.WithoutServerError(iris.ErrServerClosed), // 疏忽框架谬误 ) // 输入错误信息 if err != nil { log.Println(err.Error()) panic(err.Error()) }}func notFound(ctx iris.Context) { // 呈现 404 的时候,就跳转到 $views_dir/errors/404.html 模板 err := ctx.View("errors/404.html") if err != nil { return }}func internalServerError(ctx iris.Context) { _, err := ctx.WriteString("呈现问题,请重试") if err != nil { return }}func newLogFile() *os.File { filename := "logs/" + time.Now().Format("20060102") + ".log" // 关上以以后日期为文件名的文件(不存在则创立文件,存在则追加内容) f, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { panic(err) } return f}
前端模板抉择
感激:https://www.yanshisan.cn/
开源代码地址:https://gitee.com/yssgit/yan_shisan_blog_template
本我的项目用到模板中 博客、留言、日记、友链模块
将源代码下载下来 将html 和动态文件进行拆分构造如下
web |-assets | |-css | |-font | |-font-awesome | |-image | |-js | |-layui |-views | |-errors | |-public
差不多这样 下一篇开始依据前端模板创立数据库和构造体