go下載安裝使用web框架iris + go mod使用

目錄

一、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

GO111MODULE 有三個值:offonauto(默認值)

  • 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 提供了modulerequirereplaceexclude 四個命令

  • 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

 

參考博客:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章