[Go]认识Beego框架

对比Gin的简洁,自己之前基于Gin撸了一个架子,确实比beego目录看着舒服多了,不过最近接触到beego的项目,beego的bee工具使用还是很方便,来简单梳理下细节;
Beego是一个开源的Go语言Web应用框架,用于快速开发高性能和可维护的应用程序。它提供了一系列的工具和功能,包括路由、ORM(对象关系映射)、会话管理、日志系统等,使得开发者能够更轻松地构建Web应用。
框架目录介绍
Beego框架的结构通常包含以下几个主要部分:
- Controllers(控制器): 控制器是处理用户请求的地方,它们负责接收用户输入、调用模型层处理数据、并最终返回合适的视图。
- Models(模型): 模型层通常用于处理数据相关的逻辑,例如数据库操作、数据验证等。
- Views(视图): 视图负责显示用户界面。在Beego中,视图通常是使用Go语言的模板引擎实现的。
- Routers(路由): Beego框架通过路由将URL映射到相应的控制器和方法上。路由定义了URL模式,以及与之相关联的控制器和方法。
- Middlewares(中间件): 中间件允许你在请求到达控制器之前或之后执行一些操作。它们可以用于身份验证、日志记录、缓存等。
下面是一个简单的Beego应用程序的目录结构示例:
mybeegoapp/
|-- conf/
| `-- app.conf
|-- controllers/
| `-- default.go
|-- models/
| `-- models.go
|-- static/
|-- tests/
|-- views/
|-- main.go
如何入门Beego框架:
安装Beego: 使用以下命令安装Beego框架和工具:
go get -u github.com/beego/beego/v2
go get -u github.com/beego/bee/v2
创建Beego应用: 运行以下命令创建一个新的Beego应用:
bee new mybeegoapp
这将在当前目录下创建一个名为mybeegoapp的新应用程序。
启动应用: 进入应用目录并运行以下命令:
cd mybeegoapp
bee run
这将启动Beego应用并监听默认端口(通常是8080)。
访问应用: 打开浏览器并访问 http://localhost:8080,你应该能够看到Beego的欢迎页面。
编写控制器和视图: 编辑controllers/default.go文件以添加自定义的控制器逻辑,编辑views文件夹下的模板文件以创建视图。
定义路由: 在routers文件夹下的router.go文件中定义URL路由规则。
学习文档: 阅读Beego框架的官方文档,了解更多关于路由、控制器、模型等方面的详细信息。文档地址:Beego官方文档。
Beego和Gin
如果你需要一个拥有完备功能集的框架,而且对性能要求相对较低,Beego可能是一个更好的选择。如果你更注重性能、轻量级设计,并且习惯使用更灵活的框架,那么Gin可能更适合你
Beego优点:
- 完备的功能集: Beego提供了很多内置的功能,包括ORM、会话管理、路由、中间件等,使得开发者在构建Web应用时可以更轻松地使用这些功能。
- 自带工具: Beego自带了一些开发工具,如bee工具,可以加速开发过程,包括快速创建新应用、自动化测试等。
- 强大的社区支持: 由于Beego是一个老牌的框架,它拥有一个庞大而活跃的社区,有很多文档和资源可供参考。
- 适用于传统应用: Beego更适合传统的MVC架构,对于有经验的开发者来说,它提供了一种熟悉的开发模式。
Gin优点:
- 极高的性能: Gin以性能为重点,相较于Beego等框架,它的性能更高,适合构建高性能的Web服务。
- 轻量级: Gin的设计非常轻量,代码量相对较少,启动速度快,适合构建小型到中型的项目。
- 灵活的中间件: Gin的中间件系统非常灵活,允许开发者方便地扩展和定制中间件。
- 适用于RESTful API: Gin的设计更加适用于构建RESTful API,对于需要高效处理HTTP请求的场景非常合适。
Beego缺点:
- 性能相对较低: 相对于一些轻量级的框架,Beego的性能可能略显较低。
- 较为传统的设计: Beego的设计相对较为传统,可能不如一些新兴框架那样灵活和现代。
Gin缺点:
- 相对较新: 相对于Beego,Gin是一个相对较新的框架,因此可能没有那么庞大的社区和生态系统。
- 不提供ORM: Gin本身不提供ORM功能,这可能需要开发者选择和集成第三方的ORM库。
- 较少的内置功能: Gin相对于Beego来说是一个更轻量级的框架,因此一些功能可能需要开发者自己实现或者集成第三方库。
总之,beego使用起来确实可以,代码臃肿确实也存在,相比Gin的简洁性确实用起来不舒服,但Gin的开发插拔式开发所用到的组件都需要整合;beego就是一梭子都给你;gin让你更能深入了解和思考一个项目,可能beego就不用管这些吧,个人理解,就这样!
参考
- https://git-books.github.io/books/beego/?p=install/bee.md
- https://github.com/beego/beego
相关文章:
[Go]认识Beego框架
对比Gin的简洁,自己之前基于Gin撸了一个架子,确实比beego目录看着舒服多了,不过最近接触到beego的项目,beego的bee工具使用还是很方便,来简单梳理下细节; Beego是一个开源的Go语言Web应用框架,…...
JWT登录
JWT JSON Web Token(JSON Web令牌) 是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象安全地传输信息。此信息可以验证和信任,因为它是数字签名的。jwt可以使用秘密〈使用HNAC算法…...
MySQL和Redis的事务有什么异同?
MySQL和Redis是两种不同类型的数据库管理系统,它们在事务处理方面有一些重要的异同点。 MySQL事务: ACID属性: MySQL是一个关系型数据库管理系统(RDBMS),支持ACID属性,即原子性(Ato…...
【C#】基础巩固
最近写代码的时候各种灵感勃发,有了灵感,就该实现了,可是,实现起来有些不流畅,总是有这样,那样的卡壳,总结下来发现了几个问题。 1、C#基础内容不是特别牢靠,理解的不到位ÿ…...
基于Skywalking开发分布式监控(一)
接手为微服务系统搞链路监控项目一年多,也和skywalking打了一年多的交道,也应该有个总结,主要谈一下搭建监控系统遇到的难点和解决方案。 说明: 本文的代码均由本地演示代码替代,非实际代码 为啥选skywalking…...
高防服务器什么意思
高防服务器什么意思,为什么要用高防服务器,小编为您整理发布高防服务器什么意思的解读。 高防服务器是指具备较高防御能力的服务器,能够抵御DDoS/CC等网络攻击。 高防服务器通常用于保护游戏、APP、金融、电商等业务,这些领域因为…...
C/C++ - Auto Reference
目录 auto Reference auto 当使用auto关键字声明变量时,C编译器会根据变量的初始化表达式推断出变量的类型。 自动类型推断:auto关键字用于自动推断变量的类型,使得变量的类型可以根据初始化表达式进行推导。 初始化表达式&#x…...
springboot项目快速引入knife4j
引入依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version> </dependency>knife4j配置文件 basePackage改为自己存放接口的包名 /*** Kn…...
SpringBlade微服务开发平台
采用前后端分离的模式,前端开源两个框架:Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI)后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:BladeToolBladeTool已推送至…...
【运维】Ubuntu18.04系统docker方式安装ElasticSearch和kibana
前言 最近需要搭建一套测试环境,用到了ElasticSearch( 简称es)搜索引擎,安装过程有些曲折,记录下来作为经验。 正文 环境 Ubuntu18.04 操作系统Docker Server Version: 20.10.7ElasticSearch Version: 8.5.3Kibana Version: 8.5.3 说明 E…...
五种单例模式
在整个程序中,保持只有一个实例对象,就是单例模式。 单例模式可以减少构建,GC的次数,提升性能,还能减少堆内存的开销。 1. 懒汉式 在需要使用对象的时候,才进行创建 通过private构造方法,确保…...
【ceph】ceph关于清洗数据scrub的参数分析
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...
自然语言NLP学习
2-7 门控循环单元(GRU)_哔哩哔哩_bilibili GRU LSTM 双向RNN CNN 卷积神经网络 输入层 转化为向量表示 dropout ppl 标量 在物理学和数学中,标量(Scalar)是一个只有大小、没有方向的量。它只用一个数值就可以完全…...
js实现填涂画板
文章目录 1实现效果2 实现代码 凑个数,存粹是好玩儿,哈哈... 1实现效果 最上方一栏: 左侧是颜色按钮,点击选中颜色, 中间是功能按钮,重置颜色、清空画板、回退、涂改液(填涂色置为白色ÿ…...
springboot农机电招平台源码和论文
随着农机电招行业的不断发展,农机电招在现实生活中的使用和普及,农机电招行业成为近年内出现的一个新行业,并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算机让复杂的销售操作变简单,变高效。…...
TensorFlow 深度学习 开发环境搭建 全教程
PyTorch 深度学习 开发环境搭建 全教程 TensorFlow 深度学习 开发环境搭建 全教程 1、指定清华源命令 -i https://pypi.tuna.tsinghua.edu.cn/simple2、conda安装 这是AI开发环境的全家桶,官网下载链接Anaconda | Start Coding Immediately 尽量不要选择太新版本…...
Qt —— QCharts之曲线示波器(附源码)
示例效果 介绍 Qt5.7 版本后 Qt Charts 的发布。Qt Charts可以创建时尚的、交互式的、以数据为中心的用户界面。Qt Charts使用Qt Charts来简化集成。图表组件可以用作或对象或QML类型。 该类管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示形式。是一个可以在 .…...
【秒剪】如何更换视频画幅比例以及画面背景?
Step1:点击上方显示的画幅比例 Step2:在下方选择合适的视频画幅或更换画面背景 Step3:点击上方【填充方式】 Step4:选择合适的填充方式即可 Step5:点击这里即可自定义视频背景...
HarmonyOS鸿蒙学习笔记(23)监听Wifi状态变化
监听Wifi状态变化 前言创建接收状态变化的Bean对象创建订阅者和订阅事件参考资料: 前言 本篇博文通过动态订阅公共事件来说明怎么使用HarmonyOS监听Wifi状态的变化。关于动态订阅公共事件的概念,官网有详细说明,再次就不在赘述。博文相关项目…...
mac 安装配置oh-my-zsh
1. 安装brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 按照步骤安装即可 安装完成查看版本 brew -v 2. 安装zsh brew install zsh 查看版本 zsh --version 3. 安装oh-my-zsh github官网链…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
