| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 使用gin+bootstrap开发一个简单的博客系统(开源) -> 正文阅读 |
|
[JavaScript知识库]使用gin+bootstrap开发一个简单的博客系统(开源) |
文章目录背景因为之前已经学习了 golang,所以急需一个项目来练练手,所以打算使用非常流行的 web 开发框架 gin + bootstrap 来开发一个简单博客系统 golang 在语法上与 c 非常相似,很多程序员的入门语言都是 c 语言,所以对于 c 比较熟悉的程序员在学习 golang 时候会比较得心应手,并且 golang 其中有一个显著的特点就是不允许指针运算,这大大提高了程序的安全程度,降低了编程难度,并且提供了可供 go 虚拟机自行分配调度的 goroutine 协程。在效率上能和 java 上一较高下,在内存占用上又比 java 厉害,同时在高并发场景表现显著,对于后端开发的上手难易程度来说也是非常人性化的。可惜 golang 的历史并不悠久,目前生态仅局限于在后端发光发亮,等待生态建立,未来还是很有机会和 java 争夺天下的 项目简介开源地址 GitHub地址?? https://github.com/abcnull/gindemo 项目功能 一个博客管理系统,用户可以注册和登录,也可以查看首页,查看所有博客,登录后的用户作为博客的后台管理者,可以写博客,编辑所有博客,删除所有博客,还可以查看关于我自己的信息 主页面调用了一些开放 api,所以首页展示会比较缓慢,我的页面存在博主的个人信息,可以跳转博主 github,csdn,微信,邮箱等 使用环境使用环境如下:
项目结构采用 web 开发中经典的 mvc 的思想,结构如下:
main 主函数主函数中主要进行三项操作,每次启动服务,通过运行 main 函数实现
router 路由在 java spring 框架中,路由是通过注解的形式放在控制器上方的,java 中的注解比较强大,运行了 application 时候相当于 go 中注册了路由,并将路由绑定到了控制器,并进行了监听,要知道 go 中路由的写明和绑定控制器需要程序员自己去写明 我的博客系统中所有的路由都是放在一个 go 的路由文件中,并且 package 是 router,其中主要做的 5 项操作 创建路由实例 要知道 gin 框架底层使用的就是 httprouter,所以通过 gin 框架的 gin 包可以产生一个默认的路由实例
静态资源加载 使用 Static 函数来加载前端的静态资源 前端模版加载 使用 LoadHTMLGlob 函数来家在前端 html 模版,之所以没有使用
中间件的使用 在路由注册之前需要声明使用的中间件,这样在执行某个路由之前,就会先执行一下中间件的操作。这里使用的中间件是 session 的中间件,写法如下:
中间件都需要返回
值得注意的是通过 GET 或者 POST 注册路由的函数中第二个参数的类型也是
路由注册 接下来我们来做 GET/POST 路由注册,依据 restful 规范,我们划分了一下模块,主要注册了以下几大类的路由
注册路由中传递的参数是路由名称和路由需要绑定的 controller 函数名,值得注意的是 controller 函数名是属于 model 层model 层主要存放了文章 model 和用户 model,包括其中的 struct 结构和操作各自 model 的基本数据库操作,比如说查询用户,依据 id 查询用户,查询文章总数,依据作者查询文章总数,分页查询文章总数… User
Article
service 层service 层算是 controller 和 model 的一个中间层,如果 model 是用来封装对象,处理对象最基本数据库操作的话,service 则是基于业务对 model 数据库再做了一层封装,并且被 controller 层调用。此项目中对 controller 需要封装的一些操作数据的业务属性操作进行了进一步封装并写在 service 层 项目中 service 没有和 controller 一一对应存在,应为有的 controller 中实际没有做 service 的封装,所以没有对应的 service。项目中 service 包中的 go 文件统一用 service 作为后缀 controller 层controller 层分为了好几个文件
GET controller 中主要写的是访问路由绑定的各个 Controller 函数,其中有 GET 和 POST 类型的 controller 函数。其中对于 GET 类型函数多以 HTML 函数来渲染,如下
POST 对于 POST 类型函数多以 json 形式来进行响应
view/static 前端view 中模版界定符 因为前端 html 页面较多,所以在 view 包下进行了以下文件夹分类(依据页面模块分类),view 中存放的都是 html 页面,html 中使用了 go 的模版界定符,类似 JSP,同时也适用了 bootstrap v3框架等。虽然项目中使用了比较过时的 bootstrap 和 jquery 前端框架组建,但是对于 vue/react 大肆流行的今天,这些接近废弃的前端知识还是可以了解学习的(学习成本不会太高) 使用了模版界定符号,如下:
view 中 bootstrap v3 也使用了 bootstrap v3 框架,项目中使用的是在线版本的,当然觉得感兴趣也可以使用高版本版本 bootstrap 框架,并且可以下载下来放在 static 中调用使用。下方为在线引用 bootstrap v3
view 中 jquery 及插件 项目也是用了 jquery 及其插件,比如使用了 jquery 的校验插件
static 中 css 项目中的 css 作为统一 css,主要写的是校验的 css 样式,刚兴趣的同学可以把更多 html 通用的 css 样式放在其中 static 中 img 这里保存有项目中要使用的图片资源 static 中 js 其中主要写的是各个 html 页面的 js 操作,其实主要还是表单提交操作 database 数据库数据库着一层在 main 中被调用来初始化数据库,其中主要存在三类函数 数据库信息 数据库服务在本地,端口号用默认
Init 初始化数据库主函数 这里主要操作是数据库的连接和调用创建表的函数,这些创建表的函数,如果发现表已经存在,则不会创建表。连接数据库语句如下,下面有一些数据是封装在 config 中的,方便后续配置
建表函数 建表函数被 Init 初始化数据库总函数所调用,主要是创建 user 表的函数和创建 article 表的函数 对最基本数据库操作的封装 因为 golang 中 sql 包 select 语句可以直接查询,但是 insert/update/create/delete 语句则需要 Exec 函数去执行,所以对基本的 Exec 执行函数进行了封装,也对基本的查询语句做了最简单的封装,方便各个 model 来调用 util 工具类因为注册需要填写用户和密码,但是直接把密码明文存入数据库有安全风险,所以打算把拿到的用户密码进行 md5 加密之后(go sdk 提供 md5 包)再存入数据库中,所以 util 在项目中存在一个加密函数,当然有朋友感兴趣也可以在 util 工具包中封装更多有意思的函数
config 配置文件因为项目中存在许多常量,这些常量可以进行封装,来方便项目中许多文件代码的统一调整。目前项目中的常量如下:
其他文件
其中用来填写取消跟踪的文件,依据自己的情况来填写取消跟踪的文件
其中还存在 go.sum。因为采用 go module 来管理项目,所以存在
这个不说了,项目的说明文档 改进建议
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/4 4:25:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |