搭建基础架构
目录构造
conf 配置文件
logs 日志文件
controllers 控制器 承受参数 api的入口
datasource 数据库配置
models 构造体模型
repo 数据库的操作
route 注册路由
service 业务逻辑代码
utils 工具类
config.json 配置文件的映射
main.go 主程序入口
热启动
改变内容主动重启 速度快
go get -u github.com/kataras/rizla
rizla 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 main
import (
"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
差不多这样 下一篇开始依据前端模板创立数据库和构造体
发表回复