Files
build-web-application-with-…/13.1.md
2012-12-06 17:33:19 +08:00

47 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 13.1 项目规划
做任何事情都需要做好规划,那么我们在开发博客系统之前,也需要多好项目的规划,如何设置目录结构,如何理解整个的流程图,当我们理解了应用的执行过程,那么接下来的设计编码就会变得相对容易了
## gopath以及项目设置
gopath是一个文件系统的目录我们可以随便设置一个目录为gopath前面介绍过gopath可以是多个目录在window系统设置环境变量在linux/MacOS系统只要`export gopath=/home/astaxie/gopath`但是必须保证gopath目录下面有三个目录pkg、bin、src目录。我们新建的项目放在src目录下面我们暂定我们的博客目录叫做beeblog下面是我在window下的环境变量和目录结构的截图
![](images/13.1.gopath.png?raw=true)
![](images/13.1.gopath2.png?raw=true)
## 应用程序流程图
博客系统是基于模型-视图-控制器这一设计模式的。MVC是一种将应用程序的逻辑层和表现层进行分离的方法。在实践中由于表现层从Go中分离了出来所以它允许你的网页中只包含很少的脚本。
- 模型 (Model) 代表你的数据结构。通常来说,你的模型类将包含取出、插入、更新你的数据库资料这些功能。
- 视图 (View) 是展示给用户的信息。一个视图通常是一个网页但是在Go中一个视图也可以是一个页面片段如页头、页尾。它还可以是一个 RSS 页面或任何其它类型的“页面”Go实现的template包已经很好的体现了View这个概念。
- 控制器 (Controller) 是模型、视图以及其他任何处理HTTP请求所必须的资源之间的中介并生成网页。
下图设计了我们接下来的博客系统数据流如何贯穿整个系统:
![](images/13.1.flow.png?raw=true)
1. main.go作为应用入口初始化运行博客所需要的基本资源配置信息监听端口。
2. 路由功能检查HTTP请求根据URL以及method来确定谁来处理请求。
3. 如果缓存文件存在,它将绕过通常的系统执行顺序,被直接发送给浏览器。
4. 安全检测应用程序控制器调用之前HTTP请求和任何用户提交的数据将被过滤。
5. 控制器装载模型、核心库、辅助函数,以及任何处理特定请求所需的其它资源,控制器主要处理业务逻辑。
6. 输出视图用来渲染需要发送到Web浏览器中的内容。如果开启缓存视图首先被缓存所以将可用于以后的请求。
## 目录结构
根据上面的应用程序流程设计,博客的目录结构设计如下:
|——main.go 入口文件
|——conf 配置文件和处理模块
|——controllers 控制器入口
|——models 数据库处理模块
|——utils 辅助函数库
|——static 静态文件目录
|——views 视图库
## 框架设计
为了实现博客的快速搭建打算基于上面的流程设计开发一个最小化的框架框架包括路由功能、支持REST的控制器、自动化的模板渲染日志系统、配置管理。
## 总结
本小节介绍了博客系统从设置gopath到目录建立这样的基础信息也介绍了将要采用的MVC模式博客系统中数据流的执行流程最后通过这些流程设计了博客系统的目录结构至此我们完成了一个大框架的搭建接下来的几个小节我们将会逐个实现。
## links
* [目录](<preface.md>)
* 上一章: [构建博客系统](<13.md>)
* 下一节: [数据库设计](<13.2.md>)