iris-v12 框架搭建二 mvc架构
iris-v12 框架搭建二 mvc架构
在这里我就默认你已经会了搭建非mvc架构的方法(不懂得看iris-v12 框架搭建一 快速启动)。
想要搭建mvc的架构非常简单,只要使用iris的mvc包就好了。不过在此之前我们需要先学习一下路由组的构建。
import ("fmt""github.com/kataras/iris/v12"
)func main() {//使用默认配置//该实例在生成状态下在"./views"上注册html视图引擎,//并从"./locales/*/*"加载区域设置。//实例在出现死机时恢复,并记录传入的http请求。app := iris.Default()// 将/v1下的所有路径分到同一组v1 := app.Party("/v1"){// Method: POST// url: http://localhost:8080/v1/bestv1.Post("/best",func(ctx iris.Context) {fmt.Println("把街角魔族是动漫增加最好看的")})// Method: DELETE// url: http://localhost:8080/v1/otherv1.Delete("/other", func(ctx iris.Context) {fmt.Println("删除街角魔族以外的动漫")})// Method: PUT// url: http://localhost:8080/v1/animev1.Put("/anime",func(ctx iris.Context) {fmt.Println("把街角魔族是好看的动漫修改为最好")})// Method: GET// url: http://localhost:8080/v1/animev1.Get("/anime", func(ctx iris.Context) {fmt.Println("增加街角魔族是最好看的动漫")})}app.Run(iris.Addr(":8080"))
}
依次尝试每一个路由后的结果⬇
Application started. Press CTRL+C to shut down.
把街角魔族是动漫增加最好看的
[INFO] 2020/06/30 08:48 200 1.995ms ::1 POST /v1/best
删除街角魔族以外的动漫
[INFO] 2020/06/30 08:48 200 0s ::1 DELETE /v1/other
把街角魔族是好看的动漫修改为最好
[INFO] 2020/06/30 08:48 200 998.8µs ::1 PUT /v1/anime
增加街角魔族是最好看的动漫
[INFO] 2020/06/30 08:49 200 0s ::1 GET /v1/anime
ok可以看的出来/v1下的路由都被归类起来了。那么按照mvc的方式只要把这个路由组传递给controller处理就ok了⬇
将上面代码中从v1 := app.Party("/v1")
到结尾的代码更改为以下内容
// 将/v1下的所有路径分到同一组v1 := app.Party("/v1")//基于“party”返回一个新的mvc应用程序。//应用程序创建一个新的引擎,负责绑定依赖项并创建和激活应用程序的控制器。v1App := mvc.New(v1)//Handle为当前mvc应用程序的路由器提供控制器。v1App.Handle(new(controllers.ViewController))app.Run(iris.Addr(":8080"))
新建文件夹controllers,在controllers下创建viewController.go
注意项
- viewController这个结构体内还可以放许多东西例如session,service之类的,不过我们现在仅展示页面的话什么都不需要。
- mvc.View这个结构体还有Code,Err等,这一类属性,有兴趣自己去看看源码就懂了。
- Data: iris.Map{“xxx”: interface{}},htm里用{{.xxx}}的方式接收
- 对方法的花式取名方式和返回与接收各类格式内容感兴趣的可以看我下一篇内容。
package controllersimport ("github.com/kataras/iris""github.com/kataras/iris/v12/mvc"
)type ViewController struct {Ctx iris.Context
}//注意 这里的方法名不能随意取名
//名字的开头是url的method,后面以大写字母为分隔路径
//如果路径感觉过长可以继续再给路由组v1分组,用多个controller接收
//此处url:http://localhost:8080/v1/views/hello,method:GET
func (v *ViewController) GetViewsHello() mvc.View {helloView := mvc.View{//文件名,视图文件必须放在views文件夹下,因为这是app := iris.Default()默认的//当然你也可以自己设置存放位置Name: "hello.html",//传入的数据Data: iris.Map{"content": "街角魔族是最好看的动漫"},}return helloView
}
新建文件夹views,在views下创建hello.html
<!DOCTYPE HTML>
<html>
<body><h1>{{.content}}</h1></body>
</html>
调用url:http://localhost:8080/v1/views/hello
以上一个简单的mvc结构就完成了。
iris-v12 框架搭建二 mvc架构相关推荐
- Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介
约定 还记得上版本的第二十四篇的约定嘛?现在出来履行啦~ 为什么要重制? 之前写的专栏都是按照心情写的,在最初的时候笔者什么都不懂,而且文章的发布是按照很随性的一个顺序.结果就是说,大家都看完了,都还 ...
- Unity 游戏框架搭建 (二十一) 使用对象池时的一些细节
上篇文章使用SafeObjectPool实现了一个简单的Msg类.代码如下: class Msg : IPoolAble,IPoolType{#region IPoolAble 实现public vo ...
- 架构框架搭建(二)《Dubbo分布式领域驱动设计架构框体》
微信公众号:bugstack虫洞栈 | https://bugstack.cn 沉淀.分享.成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获.目前已完成的专题有:Net ...
- Vue3.0 + Ts 项目框架搭建二:路由 Router
前言 上篇文章我们使用 vue-cli 创建了模板项目,可以看到安装的依赖只有 vue,所以要正常的驱动项目,安装必要的依赖是跑不了. 其中Router是控制整个系统的页面路由,是最重要的依赖之一.因 ...
- golang后台管理系统Iris+Layui框架搭建教程
项目介绍 一款 Go 语言基于Iris.Layui.MySQL等框架精心打造的一款模块化.高性能.企业级的敏捷开发框架,本着简化开发.提升开发效率的初衷触发,框架自研了一套个性化的组件,实现了可插拔的 ...
- MVC架构和SSM框架的个人理解
MVC架构和SSM框架的个人理解 前言 一.原生JavaWeb对应MVC架构 二.SSM框架对应MVC架构 第一块内容(MyBatis): 第二块内容(Spring): 第三块内容(SpringMVC ...
- iris-v12 框架搭建三 接收与返回方式大全
iris-v12 框架搭建三 接收与返回方式大全 URL上的传值 表单传值multipart/form-data 有文件 无文件 表单传值application/x-www-form-urlencod ...
- 【leafletjs】搭建二维地图
基于leafletjs作为底层框架--搭建二维地图 1.加入依赖包 "leaflet": "^1.7.1", react-leaflet v.2.x中需引起的依 ...
- Flume多source,多sink组合框架搭建
Flume多source,多sink组合框架搭建 文章目录 Flume多source,多sink组合框架搭建 一.实验目的 二.实验原理 三.实验环境 四.实验内容 五.实验步骤 总结 一.实验目的 ...
最新文章
- 如何使用Leangoo敏捷工具做测试管理。
- 轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)
- python人工智能入门书籍推荐-小编就给大家推荐几本python机器学习入门书!
- 和FBI杠上了 苹果聘前亚马逊信息安全副总裁
- 你到底有几个邮箱?码云账号增加多邮箱支持!
- Python 常见的17个错误分析
- 使用Maven,Jetty和Tomcat在嵌入式容器中运行Java Web应用程序
- [C# 网络编程系列]专题九:实现类似QQ的即时通信程序
- Flask cookie API(response.set_cookie,request.cookies)
- ListView的getFirstVisiblePosition等方法返回的是哪个对象
- oracle 查表的用户名和密码,查看Oracle数据库中的所有用户名
- STM32:Code、RO、RW、Zi含义
- STM32精英版(正点原子STM32F103ZET6开发板)学习篇1——新建库函数模版
- android 截屏 简书,Android基础 截屏ScreenCapture
- java英雄联盟战斗力题目,lol:英雄联盟宇宙的顶尖战力,那些强大的飞升者们...
- JS之获取银行卡信息
- linux shell 中各种符号的含义
- excel修复后数据丢失_如何修复Excel数据栏
- AirPods过河,苹果拆桥:被“钞能力”征服的Beats何以至此?
- httpstat的简单使用
热门文章
- strtok和strtok_r最通俗易懂的理解
- 写一些给程序员世界的话(不是什么所谓的正能量,但是的确是发自内心的实话)
- Lesson 23 A new house 新居
- 微信 android兼容性问题怎么解决方案,Android11 APP拉不起微信授权问题解决办法
- Appium 介绍以及工作原理
- net start mysql无法启动请键入 NET HELPMSG 3523 已获得更多的帮助
- wordpress mysql主机_怎样把WordPress网站迁移到新虚拟主机?
- 学编程趁现在,让孩子的未来无可替代!
- 虚拟机的安装及静态IP的配置的具体操作(附上详细的操作步骤截图)
- java常微分方程数值解,SymPy / SciPy:求解具有不同变量的常微分方程组