没有合适的资源?快使用搜索试试~ 我知道了~
首页Beego 1.8.1开发框架:模块化设计与MVC架构详解
beego 1.8.1开发者文档提供了关于beego——一款流行的Go语言开发框架的详细介绍。beego被设计为一个快速、轻量级的HTTP框架,它深受tornado、sinatra和flask的影响,但充分利用了Go语言的特性如接口和结构体嵌入,使其在构建RESTful应用时表现出色。beego强调模块化设计,由八大独立模块构成,包括HTTP逻辑、缓存、日志、配置解析等功能,这使得框架具有高度的灵活性,不仅适用于HTTP应用开发,也能应用于其他非HTTP场景,比如socket游戏。 beego的架构遵循MVC(模型-视图-控制器)模式,项目的组织结构清晰,通常包含conf目录(存储配置文件),controllers目录(存放控制器代码),models目录(定义数据模型),views目录(存放模板),以及static目录(静态资源)。`main.go`作为程序的入口点,`bee`工具则提供了便捷的新建项目功能。 安装beego的过程非常简单,只需要通过Go语言的包管理工具`go get`从GitHub仓库下载: ``` go get github.com/astaxie/beego ``` 然而,需要注意的是,文档还提到了两个常见问题:一是确保已安装Git,不同平台的安装步骤可自行搜索;二是如果遇到`https`访问问题,可能需要配置本地Git以关闭HTTPS验证。 beego 1.8.1开发者文档是开发人员深入了解和使用这个Go语言框架的重要参考资料,涵盖了从框架介绍、架构原理到实际项目结构和安装步骤的全面内容,对于希望在Go领域快速构建高效应用的开发者来说,这是一个不可或缺的指南。
资源详情
资源推荐
这样用户就可以通过访问
/user
去执行
UserController
的逻辑。这就是我们所谓的路由,更多更复杂的路由规则
请查询 beego 的路由设置
再回来看看 main 函数里面的
beego.Run
,
beego.Run
执行之后,我们看到的效果好像只是监听服务端口这个过
程,但是它内部做了很多事情:
解析配置文件
beego 会自动解析在 conf 目录下面的配置文件
app.conf
,通过修改配置文件相关的属性,我们可以定
义:开启的端口,是否开启 session,应用名称等信息。
执行用户的 hookfunc
beego 会执行用户注册的 hookfunc,默认的已经存在了注册 mime,用户可以通过函
数
AddAPPStartHook
注册自己的启动函数。
是否开启 session
会根据上面配置文件的分析之后判断是否开启 session,如果开启的话就初始化全局的 session。
是否编译模板
beego 会在启动的时候根据配置把 views 目录下的所有模板进行预编译,然后存在 map 里面,这样可
以有效的提高模板运行的效率,无需进行多次编译。
是否开启文档功能
根据 EnableDocs 配置判断是否开启内置的文档路由功能
是否启动管理模块
beego 目前做了一个很酷的模块,应用内监控模块,会在 8088 端口做一个内部监听,我们可以通过这
个端口查询到 QPS、CPU、内存、GC、goroutine、thread 等统计信息。
监听服务端口
这是最后一步也就是我们看到的访问 8080 看到的网页端口,内部其实调用了
ListenAndServe
,充分利
用了 goroutine 的优势
一旦 run 起来之后,我们的服务就监听在两个端口了,一个服务端口 8080 作为对外服务,另一个 8088 端口
实行对内监控。
通过这个代码的分析我们了解了 beego 运行起来的过程,以及内部的一些机制。接下来让我们去剥离 Controller
如何来处理逻辑的。
controller 运行机制
controller 逻辑
前面我们了解了如何把用户的请求分发到控制器,这小节我们就介绍大家如何来写控制器,首先我们还是从源码
分析入手:
package controllers
import (
"github.com/astaxie/beego"
)
type MainController struct {
beego.Controller
}
func (this *MainController) Get() {
this.Data["Website"] = "beego.me"
this.Data["Email"] = "astaxie@gmail.com"
this.TplName = "index.tpl"
}
上面的代码显示首先我们声明了一个控制器
MainController
,这个控制器里面内嵌了
beego.Controller
,这就是
Go 的嵌入方式,也就是
MainController
自动拥有了所有
beego.Controller
的方法。
而
beego.Controller
拥有很多方法,其中包括
Init
、
Prepare
、
Post
、
Get
、
Delete
、
Head
等方法。我们可以通
过重写的方式来实现这些方法,而我们上面的代码就是重写了
Get
方法。
我们先前介绍过 beego 是一个 RESTful 的框架,所以我们的请求默认是执行对应
req.Method
的方法。例如浏
览器的是
GET
请求,那么默认就会执行
MainController
下的
Get
方法。这样我们上面的 Get 方法就会被执行
到,这样就进入了我们的逻辑处理。(用户可以改变这个行为,通过注册自定义的函数名,更加详细的请参考路
由设置)
里面的代码是需要执行的逻辑,这里只是简单的输出数据,我们可以通过各种方式获取数据,然后赋值
到
this.Data
中,这是一个用来存储输出数据的 map,可以赋值任意类型的值,这里我们只是简单举例输出两个
字符串。
最后一个就是需要去渲染的模板,
this.TplName
就是需要渲染的模板,这里指定了
index.tpl
,如果用户不设置
该参数,那么默认会去到模板目录的
Controller/<方法名>.tpl
查找,例如上面的方法会
去
maincontroller/get.tpl
(
文件、文件夹必须小写
)。
用户设置了模板之后系统会自动的调用
Render
函数(这个函数是在 beego.Controller 中实现的),所以无需用
户自己来调用渲染。
当然也可以不使用模版,直接用
this.Ctx.WriteString
输出字符串,如:
func (this *MainController) Get() {
this.Ctx.WriteString("hello")
}
至此我们的控制器分析基本完成了,接下来让我们看看如何来编写 model。
model 逻辑
model 分析
我们知道 Web 应用中我们用的最多的就是数据库操作,而 model 层一般用来做这些操作,我们的
bee new
例子
不存在 Model 的演示,但是
bee api
应用中存在 model 的应用。说的简单一点,如果您的应用足够简单,那么
Controller 可以处理一切的逻辑,如果您的逻辑里面存在着可以复用的东西,那么就抽取出来变成一个模块。因此
Model 就是逐步抽象的过程,一般我们会在 Model 里面处理一些数据读取,如下是一个日志分析应用中的代码
片段:
package models
import (
"loggo/utils"
"path/filepath"
"strconv"
"strings"
)
var (
NotPV []string = []string{"css", "js", "class", "gif", "jpg", "jpeg", "png",
"bmp", "ico", "rss", "xml", "swf"}
)
const big = 0xFFFFFF
func LogPV(urls string) bool {
ext := filepath.Ext(urls)
if ext == "" {
return true
}
for _, v := range NotPV {
if v == strings.ToLower(ext) {
return false
}
}
return true
}
所以如果您的应用足够简单,那么就不需要 Model 了;如果你的模块开始多了,需要复用,需要逻辑分离了,那
么 Model 是必不可少的。接下来我们将分析如何编写 View 层的东西。
view 渲染
剩余213页未读,继续阅读
qishuai231
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端面试必问:真实项目经验大揭秘
- 永磁同步电机二阶自抗扰神经网络控制技术与实践
- 基于HAL库的LoRa通讯与SHT30温湿度测量项目
- avaWeb-mast推荐系统开发实战指南
- 慧鱼SolidWorks零件模型库:设计与创新的强大工具
- MATLAB实现稀疏傅里叶变换(SFFT)代码及测试
- ChatGPT联网模式亮相,体验智能压缩技术.zip
- 掌握进程保护的HOOK API技术
- 基于.Net的日用品网站开发:设计、实现与分析
- MyBatis-Spring 1.3.2版本下载指南
- 开源全能媒体播放器:小戴媒体播放器2 5.1-3
- 华为eNSP参考文档:DHCP与VRP操作指南
- SpringMyBatis实现疫苗接种预约系统
- VHDL实现倒车雷达系统源码免费提供
- 掌握软件测评师考试要点:历年真题解析
- 轻松下载微信视频号内容的新工具介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功