目录
一、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 有以下命令:
命令 | 说明 |
---|---|
download | download modules to local cache(下载依赖包) |
edit | edit go.mod from tools or scripts(编辑go.mod |
graph | print module requirement graph (打印模块依赖图) |
init | initialize new module in current directory(在当前目录初始化mod) |
tidy | add missing and remove unused modules(拉取缺少的模块,移除不用的模块) |
vendor | make vendored copy of dependencies(将依赖复制到vendor下) |
verify | verify dependencies have expected content (验证依赖是否正确) |
why | explain 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