【码神之路】【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、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/174375.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PyCharm玩转ESP32

想必玩ESP32的童鞋都知道Thonny,当然学Python的童鞋用的更多的可能是PyCharm和VsCode Thonny和PyCharm的对比 对于PyCharm和VsCode今天不做比较,今天重点说一下用PyCharm玩转ESP32,在这之前我们先对比下Thonny和PyCharm的优缺点 1、使用Tho…

引迈-JNPF低代码项目技术栈介绍

从 2014 开始研发低代码前端渲染,到 2018 年开始研发后端低代码数据模型,发布了JNPF开发平台。 谨以此文针对 JNPF-JAVA-Cloud微服务 进行相关技术栈展示: 1. 项目前后端分离 前端采用Vue.js,这是一种流行的前端JavaScript框架&a…

webpack 配置

1、基础配置 // node js核心模塊 const path require(path) // 插件是需要引入使用的 const ESLintPlugin require(eslint-webpack-plugin) // 自动生成index.html const HtmlWebpackPlugin require(html-webpack-plugin); // 将css文件单独打包,在index.html中…

【开源】基于Vue.js的教学过程管理系统

项目编号: S 054 ,文末获取源码。 \color{red}{项目编号:S054,文末获取源码。} 项目编号:S054,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 教师端2.2 学生端2.3 微信小程序端2…

iOS越狱检测总结

文章目录 前言检测越狱文件私有目录检测检测越狱软件检测系统目录是否变为链接动态库检测环境变量检测系统调用检测指令集调用检测其他方式检测 前言 在之前的文章中,已经带大家一起制作了一个屏蔽越狱检测的Tweak。本文就和大家一起学习整理一下iOS系统中有哪些越…

scala的schema函数(算子)

在翻阅一些代码的时候,schema算子好像没碰到过,比较好奇structField这个类型,为什么可以直接用name参数,就翻阅了下资料: 在 Apache Spark 中,DataFrame 是一种分布式的数据集,它是以类似于关系…

电脑便签功能在哪里找?电脑桌面便签怎么添加?

很多上班族在使用电脑办公的时候,都需要随手记录工作事项,例如记录共同工作时的想法、会议笔记、常用工作资料、每天待办的工作任务等事项,这时候使用纸质的笔记本来记录工作,不仅不方便随时查看和使用,而且在修改、删…

基于SSM的校内互助交易平台设计

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

ppt录屏制作微课,轻松打造精品课程

微课作为一种新型的教学方式逐渐受到广大师生的欢迎。微课具有方便快捷、内容丰富、互动性强等特点,可以有效地帮助教师传达知识,提高学生的学习效果。其中,ppt录屏制作微课就是一种常见的方式。本文将介绍ppt录屏的使用方法,帮助…

Double 4 VR智能互动系统在轨道交通实训教学中的应用

Double 4 VR智能互动系统是一种集成了虚拟现实技术、人工智能和物联网技术的教学系统。计算机通过模拟真实的轨道交通环境,为学生提供了一个高度仿真的学习环境,帮助他们更好地理解和掌握轨道交通的相关知识和技能。 首先,Double 4 VR智能互动…

注解案例:山寨Junit与山寨JPA

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 上篇讲了什么是注解&am…

注册中心CAP架构剖析

Nacos 支持 AP 或 CP AP Nacos 通过临时节点实现 AP 架构,将服务列表放在内存中; CP Nacos 通过持久化节点实现 CP 架构,将服务列表放在文件中,并同步到内存,通过 Raft 协议算法实现; 通过配置 epheme…

集中签约 深算院YashanDB关键行业商用提速

11月17日,深圳计算科学研究院在2023深圳企业创新发展大会主论坛上,与金融、能源和交通等关键行业的7家标杆企业签约,签约总金额近亿元,标志着YashanDB在重点行业的商用落地迈入全面提速阶段。 会上,深圳计算科学研究院…

人工智能的时代---AI的影响

人工智能(AI)是当前科技领域的一个热门话题,它正在以前所未有的速度改变着我们的生活方式和工作方式。从智能家居到自动驾驶,从智能医疗到智能金融,人工智能正在渗透到我们生活的方方面面。在这篇文章中,我…

C语言基础---函数、数组

目录 一、函数 二、数组​ 一、函数 交换两个数: 发现这样并没有交换a和b的值,只是交换了x和y的值,这是因为: //当实参传递给形参的时候,形参是实参的一份临时拷贝 //对形参的修改不能改变实参 实参与形参是…

禁止linux shell 终端显示完整工作路径,如何让linux bash终端不显示当前工作路径

在操作linux时,默认安装的linux终端会显示当前完整的工作目录,如果目录比较短还是可以接收,如果目录比较长,就显得比较别扭,操作起来不方便,因此需要关闭这种功能。 要关闭这个功能,请按如下步骤…

Vue 3实战:打造交互丰富的任务管理应用

Vue 3实战:打造交互丰富的任务管理应用 前言搭建Vue 3项目步骤 1: 安装Vue CLI 3步骤 2: 创建Vue 3项目步骤 3: 进入项目目录步骤 4: 启动项目步骤 5: 查看项目结构 组件设计与复用1. **组件的职责单一化:**2. **Props传递:**3. **插槽(Slots&#xff09…

【C++进阶之路】第七篇:异常

文章目录 一、C语言传统的处理错误的方式二、 C异常概念三、异常的使用1.异常的抛出和捕获2.异常的重新抛出3.异常安全4.异常规范 四、自定义异常体系五、C标准库的异常体系(了解)六、异常的优缺点 一、C语言传统的处理错误的方式 传统的错误处理机制&am…

【docker下安装jenkins】(一)

目的:在Linux操作系统(x86_64)下,使用docker部署jenkins,python使用压缩包安装 安装jenkins的步骤 1、编排jenkins的docker-compose.yml文件 说明:这里遇到部署jenkins后,占用内存8G,所以重新…

OpenAI宫斗大戏,奥特曼面临的选择

首先不得不说,这件事情进展真快,三四天时间之内,大量的消息,各种不同渠道的,各种不同角度的,其中也包括各种决策,速度之快真的是应接不暇,仿佛在看真人秀一般 这里简单帮大家梳理一…