ace admin 是一个非常好的后台系统ui。 集成了很多的好东西。非常的方便开发后天系统,而且能很漂亮。 上面有一堆的例子。非常的漂亮。 http://ace.jeka.by/ 之前还是收费的。后来在github 上面放了一个项目。 但是没有源码。是压缩之后的代码。而且,付费地址也不再了。 是一个过期了的模板 3 年前的了。 github 地址: https://github.com/bopoda/ace 项目已经没有人维护了。也没有源码了,原来的购买地址都没有了。做公司的后天系统没啥问题了。 比起其他的也没感觉上不潮但比起原生的 bootstrap 要好看点。 已经不错了,还要啥自行车呢。 我写了一个 go-admin 的demo : 项目地址: https://github.com/freewebsys/go-admin 代码都上传上去了。
项目使用beego 进行开发,使用beego开发还是非常的快速的。 将项目 ace 代码 assets 下面的 4个 文件夹拷贝到 beego 项目的 static 文件夹下面:
css font-awesome images js项目几算导入了。其他两个文件夹不加也罢。
存储对象一个用户表的设计:
CREATE TABLE `user_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_name` varchar(200) DEFAULT NULL, `password` varchar(200) DEFAULT NULL, `name` varchar(200) DEFAULT NULL, `birth_date` varchar(200) DEFAULT NULL, `gender` int(1) DEFAULT NULL, `email` varchar(200) DEFAULT NULL, `phone` varchar(200) DEFAULT NULL, `status` tinyint(1) NOT NULL , `create_time` datetime NOT NULL, `update_time` datetime NOT NULL, UNIQUE KEY `user_name` (`key`), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;一个简单的用户表 对应的数据操作:
package models import ( "github.com/astaxie/beego/orm" "github.com/astaxie/beego/logs" "time" ) type UserInfo struct { Id int64 `orm:"auto"` UserName string `orm:"size(255)"` //登录名 Password string `orm:"size(255)"` //密码 Name string `orm:"size(255)"` //用户名 BirthDate string `orm:"size(255)"` //生日 Gender int8 //性别 Email string `orm:"size(255)"` //Email Phone string `orm:"size(255)"` //电话 Status int8 //状态 CreateTime time.Time //创建时间 UpdateTime time.Time //更新时间 } func init() { orm.RegisterModel(new(UserInfo)) } //创建&更新 func SaveUserInfoById(m *UserInfo) (err error) { o := orm.NewOrm() var num int64 if m.Id == 0 { m.CreateTime = time.Now() m.UpdateTime = time.Now() if num, err = o.Insert(m); err == nil { logs.Info("Number of records insert in database:", num) } } else { var tmp *UserInfo tmp, err = GetUserInfoById(m.Id) if err == nil { //修改几个参数的名称。 tmp.UserName = m.UserName tmp.Name = m.Name tmp.BirthDate = m.BirthDate tmp.Gender = m.Gender tmp.Email = m.Email tmp.Phone = m.Phone tmp.Status = m.Status tmp.UpdateTime = time.Now() if num, err = o.Update(tmp); err == nil { logs.Info("Number of records updated in database:", num) } } } return } //删除 func DeleteUserInfo(id int64) (err error) { o := orm.NewOrm() v := UserInfo{Id: id} if err = o.Read(&v, "Id"); err == nil { if num, err := o.Delete(&UserInfo{Id: id}); err == nil { logs.Info("Number of records deleted in database:", num) } } return } //按id查询 func GetUserInfoById(id int64) (v *UserInfo, err error) { o := orm.NewOrm() v = &UserInfo{Id: id} if err = o.Read(v, "Id"); err == nil { return v, nil } return nil, err } //查询数据 func QueryAllUserInfo() (dataList []interface{}, err error) { var list []UserInfo o := orm.NewOrm() qs := o.QueryTable(new(UserInfo)) //查询 //查询数据 if _, err = qs.All(&list); err == nil { for _, v := range list { dataList = append(dataList, v) } return dataList, nil } return nil, err }参考了bee go 自动生成的代码。但是发现beego 升级了之后模板变了。 其中特别要主要 := 的坑,如果稍不留神就会替换掉对象在一个作用域下,而且不会报错呢。
展示列表: 参考:http://ace.jeka.by/tables.html
<table id="simple-table" class="table table-bordered table-hover"> <tr> <th>Id</th> <th>姓名</th> <th>生日</th> <th>性别</th> <th>Email</th> <th>电话</th> <th>状态</th> <th>创建时间</th> <th>更新时间</th> <th>操作</th> </tr> {{range .List}} <tr> <td>{{.Id}}</td> <td>{{.Name}}</td> <td>{{.BirthDate}}</td> <td>{{.Gender}}</td> <td>{{.Email}}</td> <td>{{.Phone}}</td> <td>{{.Status}}</td> <td>{{date .CreateTime "2006-01-02 15:04:05"}}</td> <td>{{date .UpdateTime "2006-01-02 15:04:05"}}</td> <td> <div class="hidden-sm hidden-xs btn-group"> <button class="btn btn-xs btn-info" onclick="showEditWindow('{{.Id}}');"> <i class="ace-icon fa fa-pencil bigger-120"></i> </button> <button class="btn btn-xs btn-danger" onclick="deleteConfirm('{{.Id}}');"> <i class="ace-icon fa fa-trash-o bigger-120"></i> </button> </div> </td> </tr> {{end}} </table>特别注意对时间字段的格式化:{{date .UpdateTime “2006-01-02 15:04:05”}} 不是java习惯的 yyyy-MM-dd 感觉上一点也不好记。是按照老外的习惯记住的 1 2 3 4 5 6 的规则命名的。
创建& 编辑:
将对象放到 data里面,然后做展示编辑。
<div class="col-sm-9"> <input type="text" id="UserName" name="UserName" placeholder="登录名" class="col-xs-10 col-sm-5" value="{{.UserInfo.UserName}}"/> </div>其中编辑使用div 窗口弹出参考: http://ace.jeka.by/form-elements.html http://ace.jeka.by/content-slider.html 并且页面进行校验:
使用的教研框架:http://jqueryvalidation.org/
jQuery(function ($) { $('#saveForm').validate({ errorElement: 'div', errorClass: 'help-block', focusInvalid: false, ignore: "", rules: { UserName: { required: true, } }, highlight: function (e) { $(e).closest('.form-group').removeClass('has-info').addClass('has-error'); }, success: function (e) { $(e).closest('.form-group').removeClass('has-error');//.addClass('has-info'); $(e).remove(); } }); }); //保存,之前进行校验 function save() { if ($('#saveForm').valid()) { $.post("/admin/userInfo/save", $("#saveForm").serialize(), function (data) { window.location.reload(); }); } }可以针对 /admin/* 进行拦截
在 mac 上面发现总是要允许端口,开发比较讨厌,请关闭防火墙:
beego 开发一个admin系统还是挺快的。 因为beego 可以自动检查代码改的,自动重启,开发速度还是很快的。 并且因为beego的编译启动还是非常的快速的。 所以开发速度还是挺快的。golang的代码还需要适应下。上手还是挺快的。1,2个星期就能开发一个小系统。 做个用户权限,登录啥的都非常方便。
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/68955060 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys
相关资源:Go-go-admin:基于golang快速搭建后台管理中心