目录

一、go mod介绍

1、GO111MODULE

2、go mod

二、下载安装web框架iris

1.打开CMD命令提示框,设置临时环境变量

2.再次执行 go get github.com/kataras/iris 也可以加 -v -u ,如下

三、快速搭建一个MVC模式的web项目

1、创建一个新项目【iris】并完成相关代码

2、在iris目录下使用初始化生成go.mod 文件

3、添加依赖运行main函数

四、项目完整代码

1、movie.go

2、movie_repository.go

3、movie_service.go

4、movie_controller.go

5、index.html

6、main.go

7、运行go run main.go

8、访问 http://localhost:8080/hello


一、go mod介绍

1、GO111MODULE

GO111MODULEoffonauto(默认值)
GO111MODULE=offGO111MODULE=onGO111MODULE=auto
$GOPATH/pkg

2、go mod

go mod

go mod 有以下命令:

命令说明
downloaddownload modules to local cache(下载依赖包)
editedit go.mod from tools or scripts(编辑go.mod
graphprint module requirement graph (打印模块依赖图)
initinitialize new module in current directory(在当前目录初始化mod)
tidyadd missing and remove unused modules(拉取缺少的模块,移除不用的模块)
vendormake vendored copy of dependencies(将依赖复制到vendor下)
verifyverify dependencies have expected content (验证依赖是否正确)
whyexplain why packages or modules are needed(解释为什么需要依赖)

二、下载安装web框架iris

1.打开CMD命令提示框,设置临时环境变量

  • set GO111MODULE=on
  • set GOPROXY=https://goproxy.io

注意 https://goproxy.io 也可替换成阿里云的 https://mirrors.aliyun.com/goproxy

2.再次执行 go get github.com/kataras/iris 也可以加 -v -u ,如下

  •  go get -v -u github.com/kataras/iris

 这时候就把所有的依赖都下载下来了。

值得注意的是,这些包并没有下载到 GOPATH/src 目录下,而是在 GOPATH/pkg/mod 目录中

三、快速搭建一个MVC模式的web项目

1、创建一个新项目【iris】并完成相关代码

go.mod
go mod init

go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。

modulerequirereplaceexclude
modulerequirereplaceexclude

3、添加依赖运行main函数

go run main.go

现在查看go.mod 内容:

go module 安装 package 的原則是先拉最新的 release tag,若无tag则拉最新的commit。 go 会自动生成一个 go.sum 文件来记录 dependency tree

变更引入方法

四、项目完整代码

1、movie.go

package datamodelstype Movie struct {Name string
}

2、movie_repository.go

package repositoriestype MovieRepository interface {GetMovieName() string
}type MovieManager struct {}func NewMovieManager() MovieRepository {return &MovieManager{}
}
func (m *MovieManager)GetMovieName() string{//模拟赋值给模型//movie := &datamodels.Movie{Name:"慕课网视频"}//return movie.Namereturn "慕课网视频"
}

3、movie_service.go

package serviceimport ("iris/repositories""fmt"
)type MovieService interface {ShowMovieName() string
}type MovieServiceManager struct {repo repositories.MovieRepository
}func NewMovieServiceManager(repo repositories.MovieRepository)MovieService  {return &MovieServiceManager{repo:repo}
}func (m * MovieServiceManager)ShowMovieName() string{fmt.Println("我们获取到的视频名称为:"+m.repo.GetMovieName())return "我们获取到的视频名称为:"+m.repo.GetMovieName()
}

4、movie_controller.go

package controllersimport ("iris/repositories""iris/service""github.com/kataras/iris/mvc"
)type MovieController struct {}func (c *MovieController) Get() mvc.View{movieRepository := repositories.NewMovieManager()movieService := service.NewMovieServiceManager(movieRepository)MovieResult := movieService.ShowMovieName()return mvc.View{Name:"movie/index.html",Data:MovieResult,}
}

5、index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h2>{{.}}</h2>
</body>
</html>

6、main.go

package mainimport ("iris/web/controllers""github.com/kataras/iris""github.com/kataras/iris/mvc"
)func main(){app := iris.New()app.Logger().SetLevel("debug")app.RegisterView(iris.HTML("./web/views",".html"))//注册控制器mvc.New(app.Party("/hello")).Handle(new(controllers.MovieController))app.Run(iris.Addr("localhost:8080"),)
}

7、运行go run main.go

8、访问 http://localhost:8080/hello

 

参考博客:

  • Golang 解决 Iris 被墙的依赖包:https://www.cnblogs.com/ser0632/p/11374790.html
  • go mod使用:https://www.cnblogs.com/dhcn/p/11321376.html
  • GO111MODULE的设置(及GOPROXY):https://www.cnblogs.com/pu369/p/12068645.html
  • Go语言Hello world(GOPATH和Go Module版):https://www.jianshu.com/p/2e19ba8ade18