MVC 应用一般结构

enter image description here

目录结构说明如下

名称 内容
model 模型层目录,类比Java 中的entity
view 视图层,存放所有templete模板
ctrl 控制器层, 存放全部控制器
service 服务层,类比Java里面的service
html 一些静态资源页面
util 核心工具包,Md5加密,返回数据封装等
asset 静态资源目录,存放js/css/image等
args 封装全部请求参数对象
mnt 上传文件的存放目录
app.dev.conf 开发环境配置文件
app.prod.conf 生产环境配置文件
start.sh/start.bat 启动脚本
build.sh/build.bat 打包脚本
main.go 主应用程序文件

主程序结构

主程序主要做各种初始化工作

func main() {
    //解析配置文件
    fpath  := flag.String("c","app.dev.conf","config file path")
    flag.Parse()
    _,err:=util.Parse(*fpath)
    if err!=nil{
        fmt.Sprintf("error when %s",err.Error())
        return
    }
    //配置日志
    logmap := util.GetSec("log")
    service.InitLog(logmap)

    //初始化数据库
    dbmap := util.GetSec("database")
    service.InitDb(dbmap)

    //注册funcmap
    ctrl.RegisterFuncMap()
    //控制器
    ctrl.RegisterCtrl()
    //静态资源文件
    fileservermap := util.GetSec("fileserver")
    ctrl.InitFileServer(fileservermap)


    //初始化session
    sessioncfg:=util.GetSec("session")

    util.StartSession(sessioncfg)
    appcfg := util.GetSec("app")

    //视图控制器
    ctrl.RegisterView(appcfg)
    fmt.Println("http ListenAndServe " + appcfg["addr"])
    //打开服务器监听http
    err = http.ListenAndServe(appcfg["addr"], nil)
    if err!=nil{
        fmt.Println(err.Error())
        log.Println(err.Error())
    }
}

配置文件

3.1 配置文件解析

github.com/Unknwon/goconfig