题外话(ps:可以跳过)
单纯想学一门后端开发的语言,开始呢想用nodejs吧,也熟悉一点,不过放弃了
理由:干嘛不学点新东西
了解过后,看到Google弄了一个Go而且没出几年,果断入坑,贴一下go的宣传标语
用更少的代码,更短的编译时间,创建运行更快的程序,享受更多的乐趣
以下就是他们讨论得出的对编程语言的设计要求:
- 能够以更快的速度开发软件
- 开发出的软件能够很好地在现代的多核计算机上工作
- 开发出的软件能够很好地在网络环境下工作
- 使人们能够享受软件开发的过程
这还有什么理由不选它呢
基础
这里推荐3个学习基础的网站,要学习一门新的语言基础语法、安装这些都是逃不过的
Go的环境搭建也非常简单:
- 第一步: 打开浏览器,到这里Go下载页面
- 第二步: 选择符合你系统的source点击下载
- 第三步: 一直下一步知道完成安装
- 第四步: 查看本地go环境变量 $GOROOT $GOARCH $GOOS $GOBIN (默认都在$HOME/go)
为了测试你是否安装成功?
cd ~
touch hello.go
粘贴以下代码
1 2 3 4 5 6 7
| package main
import "fmt"
func main() { fmt.Println("Hello, 世界") }
|
go run hello.go
输出“Hello, 世界”即表示安装成功
这些看到什么时候开始搞项目代码呢?
我的想法是至少做到以下几点:
1.关键字、标识符、后缀名、变量基本数据类型、运算符
2.基础语法 变量定义、if-else、for循环、函数声明
3.会用package 这里可以找你要的包
实战项目分析
先放代码目录结构,标准的MVC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| . ├── README.md ├── api │ ├── main.go │ ├── user.go │ └── video.go ├── auth ├── cache │ └── main.go ├── conf │ ├── conf.go │ ├── i18n.go │ └── locales │ └── zh-cn.yaml ├── go.mod ├── go.sum ├── main.go ├── middleware │ ├── auth.go │ ├── cors.go │ └── session.go ├── model │ ├── init.go │ ├── migration.go │ └── user.go ├── serializer │ ├── common.go │ └── user.go ├── server │ └── router.go ├── service │ ├── user_login_service.go │ └── user_register_service.go └── util └── common.go
|
这样看来的话,react和go的目录结构真的好像呀,其实我感觉就是差不多的,我这里想用类比react的方法来翻译一下每个目录实际在做什么,无非当我们是前端的时候,我们是跟接口打交道,而当我们是后端的时候,我们是跟数据库打交道。
(未完待续。。。
开发经验总结
本项目呢,我还用到了redis,所以这里简单说一下
- 对redis不了解的同学可以百度一下
- 做了redis其实就是实现了数据的持久化,将全部数据存储在内存中,支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制
- 性能好,拿数据库系统比较,数据库在执行一个事务时将每个变化都写入硬盘,而redis是放内存读取
- 可以简单理解为前端中的localstorage
在install包的时候呢遇到总下载失败,原因是包被墙,下面介绍两个方案解决,更推荐第二种方式
- 如果自己有梯子,开http代理,把代理全局设置一下,类似这样
export http_proxy=127.0.0.1:10181;export https_proxy=127.0.0.1:10181;
- 换个源,就像前端中的cnpm或者taobao源,
npm install失败的时候,一般切个源就搞定了1 2 3 4 5 6
| export GO111MODULE=on
export GOPROXY=https: export GOPROXY=https:
|
在开发过程中,对数据库的CRUD是难免的,所以这里我用Sequel Pro可以很方便的图形化管理数据库
在测试接口的时候,推荐Postman,高效且易操作
个人想法
- 能做高并发的同时节约服务器资源,小服务的话用一个路由器都可以跑起来(ps:说人话!省钱!)
- 📦打包快、体积轻,部署简单
go build
- 取精华、剔糟粕,性能是真的好呀
- 这里省略一万个彩虹屁
其他一些东西