1 Star 15 Fork 11

wosylf / gomybolg gin+gorm layui 百度mip博客系统

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

gomybolg

初始化

最新版博客网址: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,如果有问题的话可以给我留言哈,还有不少待优化的地方,待后面空了补齐

介绍

  1. 主要还是mvc结构,部分会使用前后端分离,看哪个便利哪个来
  2. golang的gin框架+gorm.v2+hui后端管理,前端界面考虑用mip的模板,更利于优化
  3. 博客的基本功能,后台登陆功能已经好了,再加上增删改查的功能,再加一个分类功能就好啦

软件架构

  1. golang的gin框架+gorm.v2+hui后端管理,前端界面考虑用mip的模板
  2. 项目的依赖请自行查看go.mod包,主要依赖gorm,gin,验证码

目录结构

│ 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

安装教程

  1. 更改数据库/config/set.json里面的,俩个地方都改一下
  2. 这个拉到本地,运行main.go即可

使用说明

static里面的静态资源是h ui的模板,想研究的自己去研究一下吧

参与贡献

  1. h ui http://h-ui.net/
  2. gin+gorm
  3. 部分使用layui,及jq ajax
  4. 后端考虑部分使用vue(/static/view),功能部分
  5. 前端模板考虑使用百度mip,更利于百度优化

注意事项

本来打算添加编辑分类跟文章功能页面直接用mvc结构的,实在是vue.js的语法跟gin的模板语法冲突,木有办法,所以有俩个静态文件放在/static/view目录下面,分别是添加编辑文章与分类的功能

使用总结

如果选效率的话,我用Thinkphp,如果看成长性的话就golang了

  1. 这gin golang真不太适合用mvc结构,还是前后端分开比较好,特别是涉及到功能页面,不太利于前端功能的扩展,特别是像我这种功能页面比较喜欢用vue去写的人,vue写功能是真的方便
  2. 还有这个数据库用着也麻烦,得单独去找包,弄配置文件还得写(现在都还没有写用配置)
    如果功能页面不用vue的话,也特么难用,模板功能不支持三元运算,不然我不用专门写一个处理数据的util.body.Imgsrc里面循环把每个数据里面判断有没有图片,总不能我自己写个支持三元运算的模板语法吧
  3. golang的优点的话,熟悉了之后使用起来很方便,所有的函数有严格的数据格式要求,感觉比我之前用PHP学得快,只要输出这个函数,就知道他要传哪些数据进去,这些数据是什么格式,返回来的数据是什么,一看就懂,这里得点个赞
  4. 再说一个golang的缺点,不支持默认参数!!!这影响了我很多的写方法,比如我想写一个获取分类的,如果是用PHP写,我会写成不传值获取全部,传值则获取这个值的分类,如果第二个值不传则默认不获取二级参数,如果传了就获取,而golang不行..必须得传,所以有些获取功能看着很怪,参考下面
    golang的获取

	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;  
}
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

golang gin+gorm+h ui+layui搭建的博客系统,部分功能使用vue.js mvc的结构,后台部分上传编辑功能使用前后端分离,www.iq2.cn ,支持代码展示 展开 收起
Apache-2.0
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/wosylf/gomybolg.git
git@gitee.com:wosylf/gomybolg.git
wosylf
gomybolg
gomybolg gin+gorm layui 百度mip博客系统
master

搜索帮助