go下载安装使用web框架iris + go mod使用
目录一、go mod介绍1、GO111MODULE2、go mod二、下载安装web框架iris1.打开CMD命令提示框,设置临时环境变量2.再次执行go get github.com/kataras/iris 也可以加 -v -u ,如下三、快速搭建一个MVC模式的web项目1、创建一个新项目【iris】并完成相关代码2、在iris目录下使用初始化生成go....
目录
2.再次执行 go get github.com/kataras/iris 也可以加 -v -u ,如下
8、访问 http://localhost:8080/hello
一、go mod介绍
1、GO111MODULE
GO111MODULE
有三个值:off
, on
和auto(默认值)
。
GO111MODULE=off
,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。GO111MODULE=on
,go命令行会使用modules,而一点也不会去GOPATH目录下查找。GO111MODULE=auto
,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:- 当前目录在GOPATH/src之外且该目录包含go.mod文件
- 当前文件在包含go.mod文件的目录下面。
当modules 功能启用时,依赖包的存放位置变更为
$GOPATH/pkg
,允许同一个package多个版本并存,且多个项目可以共享缓存的 module。
2、go mod
golang 提供了 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】并完成相关代码
2、在iris目录下使用初始化生成go.mod
文件
go mod init
初始化生成go.mod文件
go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。
go.mod 提供了module
, require
、replace
和exclude
四个命令
module
语句指定包的名字(路径)require
语句指定的依赖项模块replace
语句可以替换依赖项模块exclude
语句可以忽略依赖项模块
3、添加依赖运行main函数
- 执行
go run main.go
运行代码会发现 go mod 会自动查找依赖自动下载:
现在查看go.mod 内容:
go module 安装 package 的原則是先拉最新的 release tag,若无tag则拉最新的commit。 go 会自动生成一个 go.sum 文件来记录 dependency tree
注意:在由于 go.mod会扫描同工作目录下所有 package 并且变更引入方法
,必须将 iris 当成路径的前缀,也就是需要写成"iris/web/controllers",以往 GOPATH/dep 模式允许的 import “"./web/controllers" 已经失效
四、项目完整代码
1、movie.go
package datamodels
type Movie struct {
Name string
}
2、movie_repository.go
package repositories
type MovieRepository interface {
GetMovieName() string
}
type MovieManager struct {
}
func NewMovieManager() MovieRepository {
return &MovieManager{}
}
func (m *MovieManager)GetMovieName() string{
//模拟赋值给模型
//movie := &datamodels.Movie{Name:"慕课网视频"}
//return movie.Name
return "慕课网视频"
}
3、movie_service.go
package service
import (
"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 controllers
import (
"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 main
import (
"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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)