review 13.1md,13.2md,and 13.3md,updated some word

This commit is contained in:
cwl
2012-12-26 21:24:05 +08:00
parent b2955f2577
commit c4983ed7eb
3 changed files with 40 additions and 35 deletions

13
13.3.md
View File

@@ -1,9 +1,9 @@
# 13.3 controller设计
传统的MVC框架大多数是基于Action设计的后缀式映射然而目前流行的Web趋势是REST风格的架构。尽管使用Filter或者rewrite能够通过URL重写实现REST风格的URL但是为什么不直接设计一个全新的REST风格的 MVC框架呢本小节就是基于这种思路来讲述如何从头设计一个基于REST风格的MVC框架中的controller最大限度地简化Web应用的开发甚至编写一行代码就可以实现“Hello, world”。
传统的MVC框架大多数是基于Action设计的后缀式映射然而现在Web流行REST风格的架构。尽管使用Filter或者rewrite能够通过URL重写实现REST风格的URL但是为什么不直接设计一个全新的REST风格的 MVC框架呢本小节就是基于这种思路来讲述如何从头设计一个基于REST风格的MVC框架中的controller最大限度地简化Web应用的开发甚至编写一行代码就可以实现“Hello, world”。
## controller作用
MVC设计模式是目前Web应用开发中最常见的一种架构模式,通过分离 Model模型、View视图和 Controller控制器可以更容易实现易于扩展的UI。Model指后台返回的数据View指需要渲染的页面通常是模板页面渲染后的结果通常是HTMLController指Web开发人员编写的处理不同URL的控制器如前面小节讲述的路由就是转发到控制器的过程controller在整个的MVC框架中起到了一个核心的作用处理业务逻辑因此控制器是整个框架中必不可少的一部分Model和View会根据不同的业务可以不写例如没有数据处理的逻辑处理没有页面输出的302调整之类的就不需要Model和View但是controller是必不可少的。
MVC设计模式是目前Web应用开发中最常见的架构模式通过分离 Model模型、View视图和 Controller控制器可以更容易实现易于扩展的用户界面(UI)。Model指后台返回的数据View指需要渲染的页面通常是模板页面渲染后的内容通常是HTMLController指Web开发人员编写的处理不同URL的控制器如前面小节讲述的路由就是URL请求转发到控制器的过程controller在整个的MVC框架中起到了一个核心的作用负责处理业务逻辑因此控制器是整个框架中必不可少的一部分Model和View对于有些业务需求是可以不写例如没有数据处理的逻辑处理没有页面输出的302调整之类的就不需要Model和View但是controller这一环节是必不可少的。
## beego的REST设计
前面小节介绍了路由实现了注册struct的功能而struct中实现了REST方式因此我们需要设计一个用于逻辑处理controller的基类这里主要设计了两个类型一个struct、一个interface
@@ -28,10 +28,11 @@ MVC设计模式是目前Web应用开发中最常见的一种架构模式
Head() //method=HEAD的处理
Patch() //method=PATCH的处理
Options() //method=OPTIONS的处理
Finish() //执行完成之后的处理 Render() error //执行完method对应的方法之后渲染页面
Finish() //执行完成之后的处理
Render() error //执行完method对应的方法之后渲染页面
}
那么前面介绍的路由add的时候是定义了ControllerInterface类型因此只要我们实现这个接口就可以所以我们的基类Controller实现如下的方法
那么前面介绍的路由add函数的时候是定义了ControllerInterface类型因此只要我们实现这个接口就可以所以我们的基类Controller实现如下的方法
func (c *Controller) Init(ct *Context, cn string) {
c.Data = make(map[interface{}]interface{})
@@ -112,7 +113,7 @@ MVC设计模式是目前Web应用开发中最常见的一种架构模式
c.Ct.Redirect(code, url)
}
上面的controller基类完成了接口定义的函数通过路由根据url执行相应的controller的原则会依次执行如下的函数
上面的controller基类已经实现了接口定义的函数通过路由根据url执行相应的controller的原则会依次执行如下
Init() 初始化
Prepare() 执行之前的初始化,每个继承的子类可以来实现该函数
@@ -159,4 +160,4 @@ index.tpl的代码如下所示我们可以看到数据的设置和显示都
## links
* [目录](<preface.md>)
* 上一章: [自定义路由器设计](<13.2.md>)
* 下一节: [日志和配置设计](<13.4.md>)
* 下一节: [日志和配置设计](<13.4.md>)