转载自:http://wwhl.wang/#/article?id=16

0.先安装安装iris库。

通过go get  github.com/kataras/iris安装iris库,如下图

MVC是什么?

Model(模型):它是应用程序的主体部分,主要包括业务逻辑,数据操作和数据模型;

View(视图):用户与之交互的界面;

Controller(控制器):接收来自界面的请求并交给模型进行处理;

Iris实现MVC的目录结构:

datamodels:放所有的模型
repositories:数据库的增删改查抽象成一个数据库类,这些数据库类都放在这里,跟datamodels一一对应
services:业务逻辑代码放这里,跟datamodels中的文件一一对应

其中datamodels,repositories,services从概念上可以抽象为整个models。
web
----controllers:所有的控制器都放这里
----views:存放MVC所有模板结合golang的project目录规范,project需有pkg,bin,src目录,

main.go:入口文件,初始化项目,引导项目启动

现阶段整个project的目录如下图:


main.go代码如下:

package mainimport "github.com/kataras/iris"func main(){app := iris.New()app.Logger().SetLevel("debug")app.RegisterView(iris.HTML("./web/views",".html"))//注册控制器
//控制器此时暂未实现,后面补上app.Run(iris.Addr("localhost:8080"))
}

1.在datamodels下创建一个movie.go,其代码如下:

package datamodelstype Movie struct {Name string
}

2.实现其数据库相关操作

在repositories中创建一个movie_repository.go,其代码如下:

package repositoriesimport "datamodels"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
}

3.创建movie_service.go文件,其代码如下:

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

4.在目录views下创建文件夹movie,movie下创建index.html文件,其内容如下:

<h2>{{.}}</2>

5.在controllers目录下创建movie_controller.go文件,其代码如下:

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

6.在main.go中注册控制器,最终main.go的代码如下:

package mainimport ("github.com/kataras/iris""github.com/kataras/iris/mvc""web/controllers"
)func main(){app := iris.New()//设置日志级别app.Logger().SetLevel("debug")//注册控制器mvc.New(app.Party("hello")).Handle(new(controllers.MovieController))//注册模板目录,views目录下所有html文件都当成模板app.RegisterView(iris.HTML("D:/workspace/go/aigo-iris/src/web/views",".html"))app.Run(iris.Addr("localhost:8080"))
}

最终整个project的目录如下:

7.执行main.go文件,并在浏览器地址栏输入:http://localhost:8080/hello,正常的话,会出现如下图的界面

不过人家很正常的事情,在我这里总会遇到各种各样的问题,遇到的问题及解决方案如下:
一、各种依赖问题,如下图(只截部分依赖问题的图)

解决方案:
详见

golang实现iris框架最小功能的mvc相关推荐

  1. golang使用iris框架全局异常捕获

    思路:通过设置recover可以实现异常自动回复功能,那么我们可以通过自定义recover去实现日志信息的返回 /** * @Description: 错误信息处理 * @Author: guoyzh ...

  2. 【Golang】IrIs框架 Hosts

    监听服务 您可以启动服务器监听任何类型的net.Listener甚至http.Server实例. 服务器的初始化方法应该在最后通过Run函数传递. Go开发人员用于服务其服务器的最常用方法是传递&qu ...

  3. PHP简单实现MVC框架路由功能模式

    说到使用PHP进行网站开发,自然离不开各种PHP的开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等等,让我们的开发更为快捷方便.但是很多人只是会使用框架,却从来不去了解框架的内部 ...

  4. 从零写一个具有IOC-AOP-MVC功能的框架---学习笔记---11. MVC功能之http请求处理器的编写---简易框架最后一公里!

    从零写一个具有IOC-AOP-MVC功能的框架-学习笔记 专栏往期文章链接: IOC功能相关章节: 从零写一个具有IOC-AOP-MVC功能的框架-学习笔记-01.项目初始化 从零写一个具有IOC-A ...

  5. spring框架 web开发_go语言web开发框架:Iris框架讲解(一)

    Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...

  6. spring框架 web开发_go语言web开发框架学习:Iris框架讲解(一)

    Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...

  7. IRIS 框架学习一

    IRIS 框架 1.介绍 用go语言开发web架构,速度最快的web框架. Iris是一款Go语言中用来开发web应用的框架,该框架支持编写一并在任何地方以最小的机器功率运行,如Android.ios ...

  8. Golang哪个Web框架好用?

    框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了.成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应 ...

  9. golang优秀开源框架和库

    作者:承诺一时的美丽 链接:https://www.jianshu.com/u/6719426bf97e 來源:简书 音频和音乐 用于操纵音频的库. flac - Native Go FLAC解码器. ...

最新文章

  1. EJB究竟是什么,真的那么神奇吗??
  2. 10道关于Java泛型的面试题
  3. [密码学] 破解维吉尼亚密码
  4. 无法升级_Windows 10出现升级BUG:无法保留用户个人数据
  5. 安卓USB开发教程 六 安卓 AOA 2.0
  6. IDEA查看Java类的UML关系图
  7. GP学习(四)—Running a geoprocessing tool using background geoprocessing
  8. 02-02 Python 读写文件 open|os|sys
  9. 深度学习基础 | 从Language Model到RNN
  10. 使用nsenter进入Docker容器
  11. shellshock漏洞回顾
  12. ibm服务器刷主板系统,IBM X3850 X5服务器更换主板后修改主板信息
  13. 最近在用的一个跟单软件
  14. 对PHP中GD库的一些画图函数、及函数参数的学习总结(一)
  15. windows7家庭版,专业版,旗舰版,企业版版本区别
  16. 一步一步教你Win8专业版+U盘安装+kms激活
  17. 家庭局域网_玩转Windows 10家庭组,轻松共享局域网资源,人人都可以做到
  18. 测试点击屏幕次数的软件_红蜘蛛5校色仪怎么用?显示器校色及测试色域和色彩精准度详细教程...
  19. 【VMware16的安装以及安装Linux教程(超详细上)
  20. 用树莓派做一个语音机器人

热门文章

  1. 来来来,教你如何智慧薅羊毛!
  2. 欧盟人工智能立法提案的核心思想 及未来影响分析
  3. Linux操作系统应用实例_Discuz安装
  4. 1.5_18:鸡尾酒疗法(NOIP)
  5. 计算机科学速成课笔记(六):计算机的未来
  6. 值传递,地址传递,引用传递
  7. ubuntu找不到命令 add-apt-repository command not found
  8. ssm基于Html+css的音乐网站的设计与实现毕业设计源码181627
  9. 腾讯音乐回港上市,抖音取代网易云,成为腾讯音乐终极对手?
  10. 论文笔记-DeepLung: Deep 3D Dual Path Nets for Automated Pulmonary Nodule Detection and Classification