web核心为gorilla
beego太重,个人喜欢轻量的东西,也因后台主要为nosql,beego的orm等大量功能,完全用不上,因此采用该方案。
已以该项目为核心实现完整项目,只保留account的基本操作示例,遗憾的是项目完成较早,未采用RESTful
原项目后端mongo+elasticsearch+redis
前端angularjs,现已移除
dao、manager、error、controller、route基础功能,都可用codesmith模板生成,tool下为模板文件
tool/code.js 用来解析json数据格式为go的struct,数据用json交互,存储,根据数据定义,直接生成go类型,支持嵌套。
执行方式(依赖nodejs) node tool/code.js即可 例
var jdata={
    "_id" : "564d5162e54b3106fb7badea",
    "macs" : [
        "00-21-26-00-C8-B0"
    ],
    "time" : 1447907400,
    "timestr" : "2015-11-19 12:30",
    "shop":{
        "name":"shop1"
    }
};生成结果
type Data struct {
	_id string `json:"_id" bson:"_id"`
	Macs []string `json:"macs" bson:"macs"`
	Time int `json:"time" bson:"time"`
	Timestr string `json:"timestr" bson:"timestr"`
	Shop Shop `json:"shop" bson:"shop"`
}
type Shop struct {
	Name string `json:"name" bson:"name"`
}根类型,需要手动更改名称,子类型,自动命名。
tool/mongocollection_go_opera_make.cst 根据"mongodb 表名"生成基础的curl+分页的go。
稍复杂的操作,建议实现在manager目录下。
tool/autobuild.js 用nodej和glub-watcher写的监听go 项目自动编译,编译较耗时,改一小个部分,就编译的话,多数是编译失败,而且很消耗性能,还没想到完美的优化办法,暂时用个定时器 监听2秒,停止1秒,如此循环,会减少些 “无效”的编译。
-d 网站根目录对应本地目录路径
-h host
-p port 默认端口9900
-f pid路径
-mgop mongodb端口
sudo go run ~/src/main/apiserver
docker build -t goweb .
docker run -d -p 9900:9900 goweb
启动成功后
默认主页 curl http://127.0.0.1:9900/