当前位置: 首页 > news >正文

【码神之路】【Golang】博客网站的搭建【学习笔记整理 持续更新...】

介绍

一个用原生GO开发的博客网站,涉及Golang Web开发Web服务器搭建HTTP请求处理、模板与静态资源处理等

技术栈

    后端:Go、Go并发机制前端:HTML模版

链接直达

Golang搭建博客网站的学习视频
网页首页
文章详细页
注:这里我只记录我实质✅学习到的知识点,对于一些抄抄写写的内容我就不过多赘述。

一、环境部署

1、设置下载Go模块的代理

为了提高获取Go模块的可靠性和速度,设置Go模块的中国代理服务器https://goproxy.cn ,如图:
设置go模块的代理

2、使用GO的template包解析HTML模版,生成动态页面

在这里插入图片描述

解析

在这里插入图片描述

3、index.html文件分析在这里插入图片描述

注:理解model数据结构、HTML模版渲染、go.mod Go模块文件
go.mod是Go模块文件,便于管理版本和外部依赖

二、静态资源加载

思路

  • 在main文件设置路由和对应的handlerFunc()处理函数
  • 操作view包和api包,用定义好的数据结构来渲染页面

1、总结各种的ERR处理

  1. panic(err)
  2. log.Println(“解析模版出错”,err)

2、

三、配置数据库

思路

  • 使用GO的database/sql包 驱动 数据库,配置数据库参数
  • 首页真实数据处理
    1. 分类查询:SQL数据库查询,再映射到Go结构中
    2. 文章查询:SQL实现分页查询逻辑
  • 分类文章:根据分类ID查询对应文章

1、GO的database/sql标准库连接数据库

2、定义go结构体,使用ORM框架 映射 数据库数据

3、实现分页查询和数据组装的业务逻辑

4、视图层 分页逻辑

四、实现登录功能

思路

  • GO 渲染HTML模版,定义处理HTTP请求的函数,实现登录功能
  • 创建数据模型(UserUserInfo:用户登录信息),通过生成JWT实现用户认证
  • 定义 显示文章详情的视图函数(从HTTP请求中获取文章ID,并进行查询)

1、特定URL

2、与数据库交互

3、加密和安全

使用MD5对密码进行加密处理,使用JWT进行用户会话管理

4、JSON处理

解析(生成)JSON格式响应体(请求体)

5、 服务层逻辑

实现用户登录和文章详情获取的业务逻辑

五、实现文章写作功能

思路:

  • 使用GO渲染HTML模版实现编辑文章的页面;
  • 定义文章结构体,实现文章发布和编辑的接口,包括身份验证、文章CRUD处理 以及数据库交互;(JWT身份验证、GO数据库包)
  • 使用七牛云存储服务以及其提供的**软件开发工具包(SDK)**来实现图片上传功能;(七牛云存储、SDK集成、Token生成)

1、写作页面

2、文章发布和编辑

3、图片上传

六、实现归档搜索功能

注:归档:按照特定的时间顺序展示文章

思路:

  • 定义归档路由,Go模版生成文章归档的页面,后端部分:获取所有的文章,按照日期顺序分类整理
  • 自定义功能:允许用户根据slug实现自定义url来访问特定页面
    注:比如https://www.baicao.com/posts/a1 中,a1就是一个slug
    *定义搜索路由,后端实现(据关键词搜索文章标题)查询文章的逻辑

1、定义HTTP路由(归档和搜索)

2、使用GO模版生成HTML页面

3、数据库交互

使用SQL查询来从数据库中检索文章数据,支持条件查询和全文搜索

4、数据处理

后端实现数据处理的逻辑,如文章的按月分类、搜索结果的生成。

七、优化工作

思路

  • 数据库优化查询:
  • 服务启动优化:
  • 获取参数优化

1、

2、

http://www.lryc.cn/news/239490.html

相关文章:

  • Win10 电源选项那选择“关闭显示器“为1分钟,1分钟后就锁屏了?怎么才能关闭显示器后不锁屏
  • 虚拟机centos设置网络模式(桥接|NAT)
  • MySQL 8.2 Command Line Client打开时一闪而过闪退问题
  • 【NI-RIO入门】CompactRIO介绍及环境安装
  • 生产问题 Recv-Q101
  • 从零开始:Rust环境搭建指南
  • Tensorrt 实现 yolov5-cls 遇到的问题
  • 智能指针(Newbie Note)
  • 2023.11.22 homework
  • 存储日志数据并满足安全要求
  • Linux系统管理与服务器安全:构建稳健云数据中心
  • 用css实现原生form中radio单选框和input输入框的hover样式以及聚焦focus的样式
  • 【中国平安社招校招】【内推】【当天内推】
  • CentOS 8最小安装,VM使用这个内存占用小很多
  • 【C++ Primer Plus学习记录】递增运算符(++)和递减运算符(--)
  • Oracle 数据库中 查询时如何使用日期(时间)作为查询条件
  • Tomcat 基线安全加固操作
  • redis缓存穿透、击穿、雪崩
  • 什么是数字孪生?
  • 【DevOps】Git 图文详解(八):后悔药 - 撤销变更
  • WPF基础DataGrid控件
  • 丐版设备互联方案:安卓linux互联局域网投屏,文件共享,共享剪切板
  • GZ033 大数据应用开发赛题第08套
  • 【SpringMvc】SpringMvc +MyBatis整理
  • java springboot测试类鉴定虚拟MVC运行值与预期值是否相同
  • UE5的TimeLine的理解
  • react原理及合成事件原理
  • 独立版求职招聘平台小程序开发
  • Redis事务+秒杀案例
  • 目标分割技术-语义分割总览