[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官网链…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
RushDB开源程序 是现代应用程序和 AI 的即时数据库。建立在 Neo4j 之上
一、软件介绍 文末提供程序和源码下载 RushDB 改变了您处理图形数据的方式 — 不需要 Schema,不需要复杂的查询,只需推送数据即可。 二、Key Features ✨ 主要特点 Instant Setup: Be productive in seconds, not days 即时设置 :在几秒钟…...
