实战学习golang
文章平均质量分 92
大家都知道,一味地接受学习,是一个枯燥到让人窒息的过程。更多的时候是,学完就完了,该忘的、不该忘的大部分都忘记了,没有根据自己的实际需求学习,大多都记忆不够深刻。为了打破这种低效率的学习过程,我将从这里开始,介绍一种带着需求学习方式。
一个Go开发者
一个熟悉golang的网站开发者
展开
-
golang实战开发之博客功能篇:获取路由参数和表单数据读取处理
iris框架的路由功能,支持静态路由和动态路由两种方式。静态路由就是定义的路径是固定的,只有通过固定的路径才能访问到页面内容。动态的路由,顾名思义,就是路径可以动态变化。iris自定义了一些基本的宏,可以动态的解析常用的参数类型,如果常用的宏定义不能满足需求,我们还可以使用自定义函数来完成动态路由的定义。动态路由的定义常用的路由宏定义有:string参数{param:string}这是最基本的定义,定义一个参数,它的类型为string类型。同样地,它还可以简写为{param},即{para原创 2021-01-24 10:26:37 · 1292 阅读 · 0 评论 -
golang实战开发之基础配置篇:拓展学习:iris框架介绍和使用技巧
Iris 是一款 Go 语言中用来开发 web 应用的框架,该框架支持编写一次并在任何地方以最小的机器功率运行,如 Android、ios、Linux 和 Windows 等。该框架只需要一个可执行的服务就可以在平台上运行了。Iris以简单而强大的api而闻名。 除了Iris为您提供的低级访问权限。 Iris同样擅长MVC。 它是唯一一个拥有MVC架构模式丰富支持的Go Web框架,性能成本接近于零。Iris为您提供构建面向服务的应用程序的结构。 用Iris构建微服务很容易。在 iris 框架的官方网原创 2021-01-24 10:24:58 · 1244 阅读 · 0 评论 -
golang实战开发之博客功能篇:管理员的登陆和权限控制以及sessions、cookie的使用
前面我们已经初始化博客系统了,接着,我们再做管理员登录和权限控制判断。我们将分别介绍使用sessions、cookie实现登录控制问题。sessions的使用前面我们在中间件环节的时候使用了sessions,并做了简单的介绍。我们这里在详细说明下,sessions如何使用。使用session,需要先引入github.com/kataras/iris/v12/sessions,这是一个sessions管理器。我们需要使用它来存储session数据。下面我们看看它是如何存储session的数据的。我们需原创 2021-01-24 10:23:27 · 1044 阅读 · 1 评论 -
博客功能篇:博客的初始化处理和管理员的账号注册
前面思路篇和基础篇我们已经准备得差不多了,现在开始正式进入到功能实现步骤。第一步,是处理博客初始化工作。这一步我们将完成博客的初始化工作,回写配置信息、注册管理员账号等操作。当我们需要将博客分发和部署到服务器的时候,最好的操作是,运行博客程序后,类似其他cms、WordPress一样,初次访问,会要求输入数据库信息和管理员账号信息,通过简单的配置后,不可就可以开始正常使用了。我们也一样,也在博客开始运行的时候,来配置数据库信息、管理员账号。定义常量在开始初始化之前,我先定义几个常量,在config文原创 2020-12-28 11:27:04 · 383 阅读 · 0 评论 -
础配置篇:博客404错误拦截与500错误输出
往往,我们的博客并不会包含所有的路由,也就是说,我们只有特定的几个路由,如果用户随便输入了一个路径地址,我们没有控制器来处理,那么程序就会抛出一个404,为了美观,也样式的统一,我们一般需要自定义404页面。这时候,我们就需要从路由中拦截404,然后重新定义404页面了。404错误页面的拦截和重定义我们先在controller文件夹建立一个common.go文件,用来放一些公共的处理函数,如404的控制器,500错误的控制器等。404控制器package controllerimport (原创 2020-12-20 09:55:02 · 608 阅读 · 1 评论 -
基础配置篇:博客模板的格式语法和后端如何传递数据到模板逻辑
前面的章节中,我们选择了使用iris.Django作为我们前端使用的模板引擎,因此我们这里只介绍它的相关语法。iris.Django模板语法和使用iris.Django模板引擎的模板解析器是pongo2,它是一个类似于 Django 模板语法的模板引擎。Django 是一个开放源代码Python编写的Web应用框架。它的模板引擎语法相对简单,清晰,使用起来也非常方便。因此我们就使用它做为我们的博客的前端模板引擎了。模板的嵌套引用往往制作模板的时候,我们会将一些公共部分,比如header、footer原创 2020-12-12 09:51:29 · 155 阅读 · 0 评论 -
基础配置篇:博客的控制器函数和使用
iris框架的资料,不是太多,可能使用iris框架的人,都是实用主义吧,直接都是看实例来操作了。在这里,我还是要简单说一下,以加深控制器的印象。控制器属于MVC中的C,C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。我们博客中,所有的控制器都存放在controller文件夹中。控制器的使用,需要绑定到路由中。现在我们已经在index.go 中原创 2020-12-12 09:50:50 · 170 阅读 · 0 评论 -
基础配置篇:博客的iris中间件配置
中间件的意思是,我们运行博客后,用户访问一个链接,程序会最终执行这个链接对应的控制器。在执行控制器里面的代码之前运行的其他代码,我们就叫做中间件。比如常用到的中间件有:authorization权限判断,logger访问日志,cors跨域处理options请求等。这些中间件有做拦截的,有做旁路的等等功能。我们要制作的博客,同样需要使用到中间件功能,我们的博客设计中用到的功能有管理员权限判断、cors判断等。cors跨域处理options请求options叫做预检请求,就是查看是否可以或者允许跨域请求。原创 2020-12-12 09:50:17 · 804 阅读 · 0 评论 -
基础配置篇:gorm的使用,数据库的连接和配置以及数据库操作
gorm是一个Golang写的,开发人员友好的ORM库。前面配置章节我们已经使用gorm对我们设计的mysql数据库进行了连接。这一节我们再讲讲怎么配置gorm。gorm支持多种数据库连接,目前官方列出来的支持库有:MySQL, PostgreSQL, SQLite, SQL Server 四种数据库连接。在我们要开发的博客网站中,我们选择使用 MySQL 来作为后端数据库。数据库连接连接MySQL数据库,需要引入 gorm 和mysql两个包:import ( "gorm.io/driver/原创 2020-12-11 09:26:34 · 9965 阅读 · 2 评论 -
基础配置篇:数据表和golang结构体关联和映射关系处理
上一节我们介绍了gorm的连接和配置,并且我们也在数据库中创建了 admins、article_data、articles、attachments、categories 五个表。但是我们还没有将它和golang结合在一起,我们的博客网站还不能从数据库读写数据。需要使用gorm来读写数据,我们还需要先给每个表定义一个模型(struct)。前面建立目录的时候,我们已经定义了数据库模型文件存放的目录 为model 文件夹。因此我们在model目录分别按表名称的单数形式创建对应的go文件,并定义对应的模型结构体。原创 2020-12-11 09:25:22 · 3178 阅读 · 0 评论 -
基础配置篇:扩展模板引擎功能,给模板引擎添加自定义函数
iris内置的模板引擎语言和标签,默认是不支持使用golang的函数的。但有时候,我们又需要在模板中处理一些变量。这个时候我们就需要手动给模板引擎添加自定义函数了。给模板引擎添加自定义函数的方法很简单,先是写好函数,然后将函数添加到模板引擎就可以了。下面我们以给模板添加一个时间格式化函数为例,说明给模板引擎添加函数的方法。我们先在bootstrap.go 中,添加下面的方法:func TimestampToDate(in int64, layout string) string { t := time原创 2020-12-10 14:48:13 · 301 阅读 · 0 评论 -
基础配置篇:为博客网站项目选择合适的前端模板引擎
对于golang开发网站来说,直接用golang来处理输出内容,很难满足我们多样化的页面效果需求的,因此,我们需要先给我们的博客网站设置一个模板引擎。模板引擎的作用就是让我们可以使用html标记语言来编排我们的页面,包括html、css、js等的运用。我们在Serve 函数中,增加如下代码 pugEngine := iris.Django("./template", ".html") if config.ServerConfig.Env == "development" { //测试环境下动态加原创 2020-12-10 14:46:56 · 179 阅读 · 0 评论 -
基础配置篇:博客的访问路径路由配置和控制器
上一章节我们提到了路由配置,并且使用匿名函数写了一个Hello World的控制器,直接输出内容。但是在实际的项目的使用中,往往需要更多的路由入口和更自由的控制,也是为了页面逻辑更清晰,让各个go文件做到各司其职,因此我们需要将路由配置独立编写到一个独立的文件中去。独立路由文件下面我们就将路由配置放到前面我们已经创建好的route文件夹中,我们命名一个route.go 文件,并在里面添加内容:package routeimport ( "github.com/kataras/iris/v12"原创 2020-12-10 14:45:49 · 320 阅读 · 0 评论 -
基础配置篇:初次使用golang,创建项目入口,使用iris框架运行项目
每一个项目都需要一个入口,才能让项目运行起来。前面章节我们提到了main目录为入口目录,main()为golang的入口函数。因此,我们在main目录下创建一个main.go文件来作为入口文件,在里面编写main()函数。小试身手package mainimport "fmt"func main() { fmt.Println("Hello World")}这里简单的输出了Hello World到控制台中。我们先试一下运行它,看能不能得到Hello World的结果。运行测试是非常简单原创 2020-12-09 09:06:44 · 1127 阅读 · 2 评论 -
基础配置篇:我的博客项目配置文件数据和配置的读写处理
上一节,我们已经定义和创建了我们需要的目录,和项目初始化。这一节我们就可以开始编写博客配置功能了。上面我们提到,我们的配置处理函数将存放在config目录中。我们的项目还需要配置文件。配置文件我们就命名为config.json。它是一个json文件,里面将包含了博客网站的基本信息、数据库配置信息等。config.json 配置文件为了方便查看和读取config.json,我们将它放在项目的config目录下。它里面将包含的字段信息有:{ "mysql": { "database": "iris原创 2020-12-09 09:04:44 · 252 阅读 · 0 评论 -
基础配置篇:建立项目,为我的博客项目制定目录层次结构和项目初始化
前期准备、构思已经相对比较完善了,我们在构思章节中,已经明确了我们的需求,知道我们的博客他需要有些什么功能,博客的数据库设计、博客的界面设计等信息。也大致了解到了golang的安装配置、基本语法等。这一节内容中,我们将开始进行我们最重要的一步,开始实战学习golang了。目录结构一个清晰明确的目录结构,可以让项目更清晰,更好维护和扩展。目录结构的组织,也是可以灵活变动的。它本身没有一个严格规定的格式。我们只需要做到合适、合理、清晰就可以。下面是我对博客程序设计的目录结构的设计。目录都采用一级目录形式放原创 2020-12-09 09:03:31 · 236 阅读 · 0 评论 -
拓展学习-golang的基础语法和常用开发工具
golang的基础语法golang的基础语法和其他语言大部分都差别不大,如果我们有学习过其他语言,比如JavaScript,php,java,python等,有其他语言的语法基础,那么我们学习golang将更容易上手。那我们直接开始介绍golang的语法吧。注释注释分单行注释和多行注释。golang的注释和其他的开发语言的注释是一样的。双斜杠表示单行注释,/**/表示多行注释。// 单行注释这么开头/* 多行注释*/定义包名一般来说,使用开发工具的时候,包名是不需要手动输入的,开发工原创 2020-12-08 09:20:11 · 229 阅读 · 0 评论 -
我的博客可能需应用到的技术选择和整理
我们后端的主要技术是golang。然而,往往一个系统,都不是仅靠一个技术就能完整的实现的,要不就不用叫做系统了。既然我们是要做博客网站,自然网站的相关技术少不了。下面我们来捋一捋具体需要使用到的哪些技术。htmlHTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。就是这个意思,我们的博客需要使用ht原创 2020-12-08 09:19:16 · 441 阅读 · 0 评论 -
将构思转成计算机可识别的设计,根据构思为我的博客设计数据库
根据前面的构思信息,结合思维导图、设计稿,我们就可以设计数据库了:我们需要创建5张表,分别是:文章表(articles)、文章内容表(article_data)、文章分类表(categories)、文章图片表(attachments)、博客管理员表(admins)。接着给每张表设计需要的字段:文章表articles表结构:CREATE TABLE `articles` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varc原创 2020-12-08 09:18:22 · 141 阅读 · 0 评论 -
将我的构思更直观的表现出来,为我的博客绘制一个简单的设计稿
学习golang开发,不应该仅仅局限于golang语言本身。同时我们还应该拓展学习为学好golang而需要应用到的其他方面的知识。比如学习html、css、js,项目架构、画原型图等工作。这一节,我们就要利用网络工具来给我们的博客画出存在于我们脑子里的博客的基本样子,以便后面我们制作博客网站的时候,可以拿它来做基本的参考,同时也是可以给我们后面分步编写工作提供工作量预估等。博客首页该长的样子,博客首页的设计图博客首页包含三大块,头部导航、中间主体文章列表内容、页脚信息等。头部采用常规的网址设置,中原创 2020-12-08 09:17:26 · 525 阅读 · 0 评论 -
将我的思路表现出来,为我的博客话一个思维导图
上一节我们已经构思好了我们的博客它需要的功能,这一节我们就根据构思出来的功能需求,用简单的思维导图逐一画出来。思维导图我们选用xmind软件来画。这个软件是跨平台的,它支持windows、mac平台等。下面是我画的思维导图的样子:它包含了文章模块、文章分类模块、文章图片模块、发布文章模块、博客管理员模块一共五个模块。文章模块包含:文章标题、文章关键词、文章简介、文章分类、文章内容、文章浏览量、发布时间等。文章分类模块包含:分类标题、分类简介等。文章图片模块包含:图片名称、图片文件大小、图片尺原创 2020-12-07 11:37:03 · 211 阅读 · 0 评论 -
我需要一个怎样的博客?为我的博客构思需要的功能
我使用过WordPress,zblog来搭建博客,他们都具有强大的功能,用起来也不错。但是作为学习的对象,我还是希望拥有一个自己编写的博客网站。以前是因为没有能力和动力,没办法独立完成一个博客网站。现在机会来了,我们趁学习golang的机会,顺便将曾经一直未能实现的博客也一并写出来吧。我们现在先根据曾经的博客使用习惯,来构思下我的博客系统大概会有什么样的功能。首先,构思下我的博客他需要有什么功能?需要有文章、有分类、有图片。需要可以发布文章、添加分类、上传图片。需要可以管理文章、分类,可以添加,原创 2020-12-07 11:36:07 · 148 阅读 · 0 评论 -
学习golang开始前的准备工作
学习任何一门语言,都需要了解和学习好基础,至于基于该语言的各种框架,对于我们来说,都是工具。打牢基础,并不是指只熟记语言的关键词和语法,更重要的是我们需要知道它是什么,为什么要这么用,它包括程序思维逻辑和实现方法。什么是golangGo(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go的语法接近C语言,但对于变量的声明(英语:type declaration)有所不同。Go支持垃圾回收功能。通过goroutine和通道等并行构造可以建造线程池和管原创 2020-12-07 11:35:02 · 197 阅读 · 0 评论 -
拓展学习-golang的下载、安装和环境配置教程
由于国内众所周知的原因,我们是不能直接访问到golang官网的,因此下载go语言的安装包还需要另辟蹊径。下面我们以用国内的golang源来下载安装包为例,阐述golang的下载、安装和配置方法。go语言的下载golang的官网地址为 https://golang.org/dl/ 。知道就行了,指望打开它并从它上面下载是不切实际的。国内下载地址:https://studygolang.com/dl 。根据你的系统选择合适的安装包下载。如图所示:go语言的安装和环境配置下载完成后,在你的下载目录下,原创 2020-12-07 11:34:07 · 861 阅读 · 0 评论 -
为什么要学go语言,golang的优势有哪些?
在过去几年,有一门崛起的新语言:Go 或者 GoLang。没有什么比一门新的编程语言更令开发者兴奋了,不是么? 自从我开始学习golang后,我便放弃了我的php大业,虽然php号称“php是世界上最好的语言”,但是通过实战证明,golang更香甜。为什么要学go语言?扯太高大上的优势我也说不上来,我就从我切身经历的几个方面说说我为什么学golang吧。这些都是真实的需求对比,它制约着我前进的步伐。在php开发的时候,我经常遇到一些不太好解决的问题:php只能单线程执行任务,在比如在采集任务中,它原创 2020-12-07 11:28:55 · 1270 阅读 · 1 评论 -
从零开始实战学习golang网站开发技术教程(大纲)
网上有很多的golang开发教程,他们都是从最基础的安装环境、golang语法开始的,对于一个小白,他是有帮助的。然而大家都知道,一味地接受学习,是一个枯燥到让人窒息的过程。更多的时候是,学完就完了,该忘的、不该忘的大部分都忘记了,没有根据自己的实际需求学习,大多都记忆不够深刻。为了打破这种低效率的学习过程,我将从这里开始,介绍一种带着需求学习方式。前言:为什么要学go语言,golang的优势有哪些?拓展学习-golang的下载、安装和环境配置教程思路篇:实战,就是要一开始就切入主题,此处废话省略原创 2020-12-07 11:25:13 · 1113 阅读 · 0 评论