【Go + Nuxt.js 搭建一个 BBS 系统】2. 使用go mod管理依赖

交流 Go语言分享
0 / 265

点击下面链接购买后可获取本课程完整源码,同时提供高大上的在线IDE开发环境,边看教程边动手。

作者简介

大猫猫,互联网公司老码农、不折腾不舒服斯基,多年千万日活服务端研发和架构经验。关注公众号查看更多技术干货:

码农俱乐部

实验介绍

实验内容

介绍 Go 语言官方提供的依赖管理工具go mod,学会如何在项目中使用go mod,以及历史项目如何切换到使用go mod来管理依赖。

知识点

  • 认识 go mod
  • 了解 go mod 的基础命令
  • 如何在项目中使用 go mod
  • 配置 GOPROXY

go mod 使用说明

首先我们先来执行go mod看下输出

➜  ~ go mod
Go mod provides access to operations on modules.

Note that support for modules is built into all the go commands,
not just 'go mod'. For example, day-to-day adding, removing, upgrading,
and downgrading of dependencies should be done using 'go get'.
See 'go help modules' for an overview of module functionality.

Usage:

	go mod <command> [arguments]

The commands are:

	download    download modules to local cache
	edit        edit go.mod from tools or scripts
	graph       print module requirement graph
	init        initialize new module in current directory
	tidy        add missing and remove unused modules
	vendor      make vendored copy of dependencies
	verify      verify dependencies have expected content
	why         explain why packages or modules are needed

Use "go help mod <command>" for more information about a command.

下面我们看下每个命令用户

  • go mod download: 下载依赖的 module 到本地 cache
  • go mod edit: 编辑 go.mod
  • go mod graph: 打印模块依赖图
  • go mod init: 在当前目录下初始化 go.mod(就是会新建一个 go.mod 文件)
  • go mod tidy: 整理依赖关系,会添加丢失的 module,删除不需要的 module
  • go mod vender: 将依赖复制到 vendor 下
  • go mod verify: 校验依赖
  • go mod why: 解释为什么需要依赖

配置go mod代理

众所周知的原因,国内是无法稳定的访问 Google 的服务,所以很多依赖无法成功下载,这个时候我们就要为go mod配置代理,目前国内优质的go mod代理推荐一下两个:

这里我推荐使用goproxy.cn,他是国内最早提供 goproxy 代理的服务,他的服务由七牛提供支持,七牛也是目前国内使用 Go 语言经验比较丰富的公司,我一直在使用goproxy.cn,很稳定。

下面我们执行一下命令来设置 goproxy:

go env -w GOPROXY=https://goproxy.cn,direct

注意:go env -w是不支持老版本 go 语言 sdk 的,如果你在执行该命令时报错,可以通过执行以下命令来设置GOPROXY

export GOPROXY=https://goproxy.cn

配置完成后,我们执行 go env 命令可以看到效果,如下图:

在项目中使用

在一个新项目中,如果需要使用go mod,需要先进行初始化,进入你的项目根目录,执行如下命令进行初始化:

# github.com/mlogclub/GoBBS 为包名,根据自己的实际情况自定义
go mod init github.com/mlogclub/GoBBS

初始化完成之后会在你的项目根目录生成一个go.mod文件(该文件就相当于 maven 的 pom.xml,或者 npm 的 package.json),go.mod文件内容如下:

module github.com/mlogclub/GoBBS

go 1.13

如果需要依赖第三方库,那么需要将第三方库声明到go.mod文件中,例如:

module github.com/mlogclub/GoBBS

go 1.13

require (
    gopkg.in/resty.v1 v1.12.0
)

配置完成之后执行 go mod download将依赖下载到本地,依赖下载成功之后我们就可以在代码中通过import来引入相关依赖了。例如我们新建main.go文件,完整代码如下:

package main

import (
	"fmt"

	"gopkg.in/resty.v1"
)

func main() {
	resp, err := resty.R().Get("http://www.baidu.com")
	if (err == nil) {
		fmt.Println(string(resp.Body()))
	}
}

控制台执行go run main.go即可执行该代码。

文章转载请注明出处,原文链接:https://mlog.club/topic/644

回复