扫码订阅《 》或入驻星球,即可阅读文章!

GOLANG ROADMAP

阅读模式

  • 沉浸
  • 自动
  • 日常
首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
author-avatar

GOLANG ROADMAP


首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
  • Go语言Web编程

    • 课程介绍
  • Web基础

  • 表单

  • 访问数据库

  • session和数据存储

  • 文本处理

  • Web服务

  • 安全与加密

  • 国际化和本地化

  • 错误处理,调试和测试

  • 部署与维护

  • 如何设计一个Web框架

    • 第1节:如何设计一个Web框架
    • 第2节:项目规划
    • 第3节:自定义路由器设计
    • 第4节:controller设计
    • 第5节:日志和配置设计
    • 第6节:实现博客的增删改
    • 第7节:小结
  • 扩展Web框架

扫码订阅《 》或入驻星球,即可阅读文章!

第2节:项目规划


ASTA谢

做任何事情都需要做好规划,那么我们在开发博客系统之前,同样需要做好项目的规划,如何设置目录结构,如何理解整个项目的流程图,当我们理解了应用的执行过程,那么接下来的设计编码就会变得相对容易了

# gopath 以及项目设置

假设指定 gopath 是文件系统的普通目录名,当然我们可以随便设置一个目录名,然后将其路径存入 GOPATH。前面介绍过 GOPATH 可以是多个目录:在 window 系统设置环境变量;在 Linux/MacOS 系统只要输入终端命令 export gopath=/home/astaxie/gopath,但是必须保证 gopath 这个代码目录下面有三个目录 pkg、bin、src。新建项目的源码放在 src 目录下面,现在暂定我们的博客目录叫做 beeblog,下面是在 window 下的环境变量和目录结构的截图:

图 13.1 环境变量 GOPATH 设置

图 13.2 工作目录在 $gopath/src 下

# 应用程序流程图

博客系统是基于模型 - 视图 - 控制器这一设计模式的。MVC 是一种将应用程序的逻辑层和表现层进行分离的结构方式。在实践中,由于表现层从 Go 中分离了出来,所以它允许你的网页中只包含很少的脚本。

  • 模型 (Model) 代表数据结构。通常来说,模型类将包含取出、插入、更新数据库资料等这些功能。
  • 视图 (View) 是展示给用户的信息的结构及样式。一个视图通常是一个网页,但是在 Go 中,一个视图也可以是一个页面片段,如页头、页尾。它还可以是一个 RSS 页面,或其它类型的“页面”,Go 实现的 template 包已经很好的实现了 View 层中的部分功能。
  • 控制器 (Controller) 是模型、视图以及其他任何处理 HTTP 请求所必须的资源之间的中介,并生成网页。

下图显示了项目设计中框架的数据流是如何贯穿整个系统:

图13.3 框架的数据流

  1. main.go 作为应用入口,初始化一些运行博客所需要的基本资源,配置信息,监听端口。
  2. 路由功能检查 HTTP 请求,根据 URL 以及 method 来确定谁(控制层)来处理请求的转发资源。
  3. 如果缓存文件存在,它将绕过通常的流程执行,被直接发送给浏览器。
  4. 安全检测:应用程序控制器调用之前,HTTP 请求和任一用户提交的数据将被过滤。
  5. 控制器装载模型、核心库、辅助函数,以及任何处理特定请求所需的其它资源,控制器主要负责处理业务逻辑。
  6. 输出视图层中渲染好的即将发送到 Web 浏览器中的内容。如果开启缓存,视图首先被缓存,将用于以后的常规请求。

# 目录结构

根据上面的应用程序流程设计,博客的目录结构设计如下:

|——main.go         入口文件
|——conf            配置文件和处理模块
|——controllers     控制器入口
|——models          数据库处理模块
|——utils           辅助函数库
|——static          静态文件目录
|——views           视图库

# 框架设计

为了实现博客的快速搭建,打算基于上面的流程设计开发一个最小化的框架,框架包括路由功能、支持 REST 的控制器、自动化的模板渲染,日志系统、配置管理等。

# 总结

本小节介绍了博客系统从设置 GOPATH 到目录建立这样的基础信息,也简单介绍了框架结构采用的 MVC 模式,博客系统中数据流的执行流程,最后通过这些流程设计了博客系统的目录结构,至此,我们基本完成一个框架的搭建,接下来的几个小节我们将会逐个实现。

  • gopath 以及项目设置
  • 应用程序流程图
  • 目录结构
  • 框架设计
  • 总结