Skip to content

Commit 2213bda

Browse files
committed
完成了第一小节
1 parent 01a2a0a commit 2213bda

File tree

4 files changed

+34
-2
lines changed

4 files changed

+34
-2
lines changed

13.1.md

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,44 @@
11
# 13.1 项目规划
2+
做任何事情都需要做好规划,那么我们在开发博客系统之前,也需要多好项目的规划,如何设置目录结构,如何理解整个的流程图,当我们理解了应用的执行过程,那么接下来的设计编码就会变得相对容易了
23
## gopath以及项目设置
4+
gopath是一个文件系统的目录,我们可以随便设置一个目录为gopath,前面介绍过gopath可以是多个目录,在window系统设置环境变量,在linux/MacOS系统只要`export gopath=/home/astaxie/gopath`,但是必须保证gopath目录下面有三个目录pkg、bin、src目录。我们新建的项目放在src目录下面,我们暂定我们的博客目录叫做beeblog,下面是我在window下的环境变量和目录结构的截图:
35

4-
## 目录结构
6+
![](images/13.1.gopath.png?raw=true)
7+
8+
![](images/13.1.gopath2.png?raw=true)
59

610
## 应用程序流程图
11+
博客系统是基于模型-视图-控制器这一设计模式的。MVC是一种将应用程序的逻辑层和表现层进行分离的方法。在实践中,由于表现层从Go中分离了出来,所以它允许你的网页中只包含很少的脚本。
12+
13+
- 模型 (Model) 代表你的数据结构。通常来说,你的模型类将包含取出、插入、更新你的数据库资料这些功能。
14+
- 视图 (View) 是展示给用户的信息。一个视图通常是一个网页,但是在Go中,一个视图也可以是一个页面片段,如页头、页尾。它还可以是一个 RSS 页面,或任何其它类型的“页面”,Go实现的template包已经很好的体现了View这个概念。
15+
- 控制器 (Controller) 是模型、视图以及其他任何处理HTTP请求所必须的资源之间的中介,并生成网页。
16+
17+
下图设计了我们接下来的博客系统数据流如何贯穿整个系统:
18+
19+
![](images/13.1.flow.png?raw=true)
20+
21+
1. main.go作为应用入口,初始化运行博客所需要的基本资源,配置信息,监听端口。
22+
2. 路由功能检查HTTP请求,根据URL以及method来确定谁来处理请求。
23+
3. 如果缓存文件存在,它将绕过通常的系统执行顺序,被直接发送给浏览器。
24+
4. 安全检测:应用程序控制器调用之前,HTTP请求和任何用户提交的数据将被过滤。
25+
5. 控制器装载模型、核心库、辅助函数,以及任何处理特定请求所需的其它资源,控制器主要处理业务逻辑。
26+
6. 输出视图用来渲染需要发送到Web浏览器中的内容。如果开启缓存,视图首先被缓存,所以将可用于以后的请求。
27+
28+
## 目录结构
29+
根据上面的应用程序流程设计,博客的目录结构设计如下:
30+
31+
|——main.go 入口文件
32+
|——configs 配置文件和处理模块
33+
|——controllers 控制器入口
34+
|——core 最小化的MVC框架
35+
|——logs 日志处理模块
36+
|——models 数据库处理模块
37+
|——utils 辅助函数库
38+
|——views 视图库
739

840
## 总结
9-
41+
本小节介绍了博客系统从设置gopath到目录建立这样的基础信息,也介绍了将要采用的MVC模式,博客系统中数据流的执行流程,最后通过这些流程设计了博客系统的目录结构,至此我们完成了一个大框架的搭建,接下来的几个小节我们将会逐个实现。
1042
## links
1143
* [目录](<preface.md>)
1244
* 上一章: [构建博客系统](<13.md>)

images/13.1.flow.png

17 KB
Loading

images/13.1.gopath.png

34.5 KB
Loading

images/13.1.gopath2.png

14 KB
Loading

0 commit comments

Comments
 (0)