当前位置: 首页 > news >正文

[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优点:
  1. 完备的功能集: Beego提供了很多内置的功能,包括ORM、会话管理、路由、中间件等,使得开发者在构建Web应用时可以更轻松地使用这些功能。
  2. 自带工具: Beego自带了一些开发工具,如bee工具,可以加速开发过程,包括快速创建新应用、自动化测试等。
  3. 强大的社区支持: 由于Beego是一个老牌的框架,它拥有一个庞大而活跃的社区,有很多文档和资源可供参考。
  4. 适用于传统应用: Beego更适合传统的MVC架构,对于有经验的开发者来说,它提供了一种熟悉的开发模式。
Gin优点:
  1. 极高的性能: Gin以性能为重点,相较于Beego等框架,它的性能更高,适合构建高性能的Web服务。
  2. 轻量级: Gin的设计非常轻量,代码量相对较少,启动速度快,适合构建小型到中型的项目。
  3. 灵活的中间件: Gin的中间件系统非常灵活,允许开发者方便地扩展和定制中间件。
  4. 适用于RESTful API: Gin的设计更加适用于构建RESTful API,对于需要高效处理HTTP请求的场景非常合适。
Beego缺点:
  1. 性能相对较低: 相对于一些轻量级的框架,Beego的性能可能略显较低。
  2. 较为传统的设计: Beego的设计相对较为传统,可能不如一些新兴框架那样灵活和现代。
Gin缺点:
  1. 相对较新: 相对于Beego,Gin是一个相对较新的框架,因此可能没有那么庞大的社区和生态系统。
  2. 不提供ORM: Gin本身不提供ORM功能,这可能需要开发者选择和集成第三方的ORM库。
  3. 较少的内置功能: 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#基础内容不是特别牢靠,理解的不到位&#xff…...

基于Skywalking开发分布式监控(一)

接手为微服务系统搞链路监控项目一年多,也和skywalking打了一年多的交道,也应该有个总结,主要谈一下搭建监控系统遇到的难点和解决方案。 说明: 本文的代码均由本地演示代码替代,非实际代码 为啥选skywalking&#xf…...

高防服务器什么意思

高防服务器什么意思,为什么要用高防服务器,小编为您整理发布高防服务器什么意思的解读。 高防服务器是指具备较高防御能力的服务器,能够抵御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微服务开发平台

采用前后端分离的模式&#xff0c;前端开源两个框架&#xff1a;Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI)后端采用SpringCloud全家桶&#xff0c;并同时对其基础组件做了高度的封装&#xff0c;单独开源出一个框架&#xff1a;BladeToolBladeTool已推送至…...

【运维】Ubuntu18.04系统docker方式安装ElasticSearch和kibana

前言 最近需要搭建一套测试环境&#xff0c;用到了ElasticSearch( 简称es)搜索引擎&#xff0c;安装过程有些曲折&#xff0c;记录下来作为经验。 正文 环境 Ubuntu18.04 操作系统Docker Server Version: 20.10.7ElasticSearch Version: 8.5.3Kibana Version: 8.5.3 说明 E…...

五种单例模式

在整个程序中&#xff0c;保持只有一个实例对象&#xff0c;就是单例模式。 单例模式可以减少构建&#xff0c;GC的次数&#xff0c;提升性能&#xff0c;还能减少堆内存的开销。 1. 懒汉式 在需要使用对象的时候&#xff0c;才进行创建 通过private构造方法&#xff0c;确保…...

【ceph】ceph关于清洗数据scrub的参数分析

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

自然语言NLP学习

2-7 门控循环单元&#xff08;GRU&#xff09;_哔哩哔哩_bilibili GRU LSTM 双向RNN CNN 卷积神经网络 输入层 转化为向量表示 dropout ppl 标量 在物理学和数学中&#xff0c;标量&#xff08;Scalar&#xff09;是一个只有大小、没有方向的量。它只用一个数值就可以完全…...

js实现填涂画板

文章目录 1实现效果2 实现代码 凑个数&#xff0c;存粹是好玩儿&#xff0c;哈哈... 1实现效果 最上方一栏&#xff1a; 左侧是颜色按钮&#xff0c;点击选中颜色&#xff0c; 中间是功能按钮&#xff0c;重置颜色、清空画板、回退、涂改液&#xff08;填涂色置为白色&#xff…...

springboot农机电招平台源码和论文

随着农机电招行业的不断发展&#xff0c;农机电招在现实生活中的使用和普及&#xff0c;农机电招行业成为近年内出现的一个新行业&#xff0c;并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算机让复杂的销售操作变简单&#xff0c;变高效。…...

TensorFlow 深度学习 开发环境搭建 全教程

PyTorch 深度学习 开发环境搭建 全教程 TensorFlow 深度学习 开发环境搭建 全教程 1、指定清华源命令 -i https://pypi.tuna.tsinghua.edu.cn/simple2、conda安装 这是AI开发环境的全家桶&#xff0c;官网下载链接Anaconda | Start Coding Immediately 尽量不要选择太新版本…...

Qt —— QCharts之曲线示波器(附源码)

示例效果 介绍 Qt5.7 版本后 Qt Charts 的发布。Qt Charts可以创建时尚的、交互式的、以数据为中心的用户界面。Qt Charts使用Qt Charts来简化集成。图表组件可以用作或对象或QML类型。 该类管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示形式。是一个可以在 .…...

【秒剪】如何更换视频画幅比例以及画面背景?

Step1&#xff1a;点击上方显示的画幅比例 Step2&#xff1a;在下方选择合适的视频画幅或更换画面背景 Step3&#xff1a;点击上方【填充方式】 Step4&#xff1a;选择合适的填充方式即可 Step5&#xff1a;点击这里即可自定义视频背景...

HarmonyOS鸿蒙学习笔记(23)监听Wifi状态变化

监听Wifi状态变化 前言创建接收状态变化的Bean对象创建订阅者和订阅事件参考资料&#xff1a; 前言 本篇博文通过动态订阅公共事件来说明怎么使用HarmonyOS监听Wifi状态的变化。关于动态订阅公共事件的概念&#xff0c;官网有详细说明&#xff0c;再次就不在赘述。博文相关项目…...

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开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...