同步操作将从 wosylf/gomybolg gin+gorm layui 百度mip博客系统 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
最新版博客网址:https://www.iq2.cn
1.先在配置文件config/set.json 输入初始的数据库,网站名称,这个后期都是可以修改的
2.go mod tidy初始化一下包
3.运行main.go//路由结构请看main.go的注释说明
4.进入初始化 /install/ 创建用户,第一篇文章,第一个分类
5.默认账号密码,longfei 123456,这个在insall里面,后期有空也放到set.json里面去
6.后台登陆地址:http://localhost:8080/admin/login (这里可以在set.json里面设置一个,默认是这个地址,改了一个后重新运行可以不用暴露后台地址)
7.上面的测试地址加了一个nginx负载均衡,两个服务器的数据库未做同步,所以有时候刷新数据会不一样.
8.如果是初学者,建议查看dao,config目录,一个封装了数据库,一个封装了设置目录,比较杂的一些功能都是放在controller目录,,server跟util目录功能有些混装,等空了再重构一下,现在先放着
9.添加模板支持,使用方法:在temp目录下面新建目录,存放模板文件,配置文件里修改配置的模板目录,在模板里面的路径/defautl指向模板目录的static目录模板目录大概结构是/temp/(模板目录名)/模板文件
golang这玩意真的不适合mvc结构,后台很多功能是前后端分离的...前台涉及到优化,用vue写不太好,还得换路由模式,太麻烦,就三个页面就先这样了,也懒得优化了
添加文章 的评论功能 2022-3-8
添加百度收录自动提交功能8.5
支持输入代码
支持百度统计,百度自动提交(需要在配置文件配置)
业余默默的写也不容易,对你有帮助的话不要吝啬自己的start,如果有问题的话可以给我留言哈,还有不少待优化的地方,待后面空了补齐
│ go.mod 包的声明文件,初始化需要用到
│ go.sum
│ main.go启动文件,主包,包含路由文件
│
├─config 设置
│ db.json 数据库的配置文件
│ set.json
│
├─controller 控制器文件
│ admin.go 管理员的控制器
│ config.go 设置相关
│ index.go 前台的控制器
│ types.go 分类相关
│ user.go 用户的一些功能相关
│
├─install 初即化的一些文件,
│ install.go初始化用户,新增加一个分类,新加文章与用户
│
├─middleware 中间件
│ islogin.go判断是否登陆的是中间件
│
├─model 连接数据库,数据库的结构声明文件
│ model.go
│
├─server 服务文件
│ cap.go 验证码
│ config.go 设置文件
│ db.go 数据库的服务
│
├─static 静态文件目录,包含h ui的一些静态文件与ueditor的静态文件,再加上后台的一些文件
│ │
│ ├─css
│ │
│ ├─lib
│ │
│ ├─static
│ │ ├─h-ui
│ │
│ ├─ueditor
│ │
│ └─view 后台新增编辑分类与文章,新加了一个设置页面
│ admin_addtype.html 分类管理
│ admin_addview.html 文章增改
│ admin_set.html 设置
│
├─util 常用的一些工具页面
│ body.go 内容的一些工具
│ md5.go md5
│ page.go 分类的一些设置
│ session.go
│ ueditor.go 编辑器
│
└─view 这里是前端的一些模板文件,admin是后台的,其它的为前台的
admin_addview.html
admin_index.html
admin_list.html
index.html
list.html
login.html
login1.html
view.html
static里面的静态资源是h ui的模板,想研究的自己去研究一下吧
本来打算添加编辑分类跟文章功能页面直接用mvc结构的,实在是vue.js的语法跟gin的模板语法冲突,木有办法,所以有俩个静态文件放在/static/view目录下面,分别是添加编辑文章与分类的功能
newList := FindListNew("0", 1) //最新
tuijian := FindListNew("-4", 1) //推荐
func FindListNew(id string, page int) (vi []d.View) {
.......省略部分
switch id {
case "0":
db.Limit(num).Offset(page * num).Order(order).Preload("Tps").Find(&vi)
.......省略部分
default:
db.Where("typeid = ?", id).Limit(num).Offset(page * num).Order(order).Preload ("Tps").Find(&vi)
}
return
}
如果是php函数可以 这样写(参考thinkphp6),使用的时候是可以不传值,也可以只传一个或者俩个,真是贼方便
$newlist = $this->getlist();//获取全部
public function getlist($id=0,$page=1,$limt=10)
{
$model=new ViewModel;
//笑死,php if里面声明的变量外面也可以用,golang不行.
if($id==0){
$data=$model->limit($limt)->page($page)->select();
}else{
$data=$model->where("id",$id)->limit($limt)->page($page)->select();
}
return $data;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。