搭建基础架构

目录构造

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

差不多这样 下一篇开始依据前端模板创立数据库和构造体