golang beego开发框架为什么 不用 beego macaron

Please enable JavaScript in your browser!
Installation
Beego contains sample applications to help you learn and use the Beego app framework.
You will need a functioning Go 1.1 installation for this to work.
You will need to install Beego and the
$ go /astaxie/beego
$ go /beego/bee
For convenience, you should add $GOPATH/bin to your$PATH environment variable.
Want to quickly see how it works? Then just set things up like this:
$ cd $GOPATH/src
$ bee new hello
$ cd hello
Windows users:
& cd %GOPATH%/src
& bee new hello
& cd hello
& bee run hello
These commands help you:
Install Beego into your $GOPATH.
Install the Bee tool in your computer.
Create a new application called hello.
Start hot compile.
Once it&s running, open a browser to .
Simple example
The following example prints Hello world to your browser, it shows how easy it is to build a web application with beego.
package main
&/astaxie/beego&
type MainController struct {
beego.Controller
func (this *MainController) Get() {
this.Ctx.WriteString(&hello world&)
func main() {
beego.Router(&/&, &MainController{})
beego.Run()
Save file as hello.go, build and run it:
$ go build -o hello hello.go
in your browser and you will see hello world.
What is happening in the scenes of the above example?
We import package </astaxie/beego. As we know, Go initializes packages and runs init() in every package (), so Beego initializes the BeeApp application at this time.
Define the controller. We define a struct called MainController with a anonymous field beego.Controller, so the MainController has all methods that beego.Controller has.
Define some RESTful methods. Due to the anonymous field above, MainController already has Get, Post, Delete, Put and other methods, these methods will be called when user sends a corresponding request (e.g. the Post method is called to handle requests using POST. Therefore, after we overloaded the Get method in MainController, all GET requests will use that method in MainController instead of in beego.Controller.
Define the main function. All applications in Go use main as their entry point like C does.
Register routers. This tells Beego which controller is responsible for specific requests. Here we register MainController for /, so all requests to / will be handed by MainController. Be aware that the first argument is the path and the second one is pointer to the controller you want to register.
Run the application on port 8080 as default, press Ctrl+c to exit.
Following are shortcut .bat files for Windows users:
Create files
step1.install-bee.bat and step2.new-beego-app.bat under %GOPATH%/src.
step1.install-bee.bat:
set GOPATH=%~dp0..
go \beego\bee
copy bee.exe %GOPATH%\bin\bee.exe
del bee.exe
step2.new-beego-app.bat:
@echo Set value of APP same as your app folder
set GOPATH=%~dp0..
set BEE=%GOPATH%\bin\bee
%BEE% new %APP%
echo %BEE% run %APP%.exe & run.bat
echo pause && run.bat
start run.bat
start http://127.0.0.1:8080
Click those two file in order will quick start your Beego tour. And just run run.bat in the future.golang+beego web开发环境
1.下载安装golang2.配置golang为了后续工作的方便,这里配置一下GOPATH,在环境变量里新增一个GOPATH系统变量,如下图所示。在Path中在添加上“c:/mygo/bin”,如下图所示。3.下载安装 liteIDE4.安装beego步骤一、安装beego点击“Git Bash”,输入“go /astaxie/beego”,如下图等一会儿即可。安装完成后,在GOPATH路径下,我这里GOPATH的路径是“C:/mygo/”,在“C:/mygo//”和“C:/mygo//”路径下能看到astaxie文件夹,还有下级beego文件夹。步骤二、安装bee工具(框架生成工具)为了方便的生成框架,点击“Git Bash”,输入“go /beego/bee”,如下图同样也是等一会儿即可。完成后,在“C:/mygo//”路径下astaxie文件夹能看到下级bee文件夹。同时,在GOPATH路径下的src同级的bin中,有“bee.exe”文件。步骤三、使用bee工具生成框架工程代码在“开始”中找到“命令提示符”,先进入到GOPATH的src路径下,再输入“bee new 工程名”,如下图所示。这样一个Beego框架的工程就生成成功了。步骤四、使用LiteIDE打开运行。LiteIDE的“文件”中找到“打开目录”,找到刚才生成的工程文件夹,如下图点击“选择文件夹”,加载了整个工程
最新教程周点击榜
微信扫一扫大家谈谈Revel和Beego吧 或者其他Go框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
Sponsored by
国内领先的实时后端云野狗 API 可用于开发即时聊天、网络游戏、实时定位等实时场景传输快!响应快!入门快!
Promoted by
大家谈谈Revel和Beego吧 或者其他Go框架
11:10:12 +08:00 · 29822 次点击
看了各种介绍和评论感觉差不多啊
第 1 条附言 &·&
23:49:08 +08:00
诶呀居然这贴突然人气高起来了。。。谢大神也出现了 感谢交流那时候还刚刚看Go没切入点后来算是自己学习写了个小框架在用吧
73 回复 &| &直到
09:17:22 +08:00
& & 11:19:19 +08:00
个人比较喜欢简单的框架
& & 12:02:57 +08:00
revel不错,不过封装的有点多
beego也不错
& & 12:08:54 +08:00
不用框架也不错。。
& & 13:42:55 +08:00
比较受不了beego作者那种「我是大牛我要在go圈子先圈个地」的姿态。。而且当时beego的代码相当惨不忍睹。
不过大半年没关注了,现状如何不好评价。
& & 14:05:07 +08:00
正在用revel,当初选择的时候也很纠结。
我觉得就算大家再怎么比较给你听你也不一定能得到满意答案,还不如你自己用两个框架试试写点东西,然后比较下。
beego由国人开发,可能在你出现问题的时候会支持的比较好。
& & 14:57:08 +08:00
@ 早晨起床看到了, 挺喜欢
& & 15:00:28 +08:00
@ 林添置你好
& & 15:00:56 +08:00
@ 我去研究一下
我也喜欢简洁的
& & 15:01:30 +08:00
@ 我试了一下
不用框架写
然后最后就变成自己写框架了
& & 15:02:07 +08:00
@ = =确实都不错
但是说beego不靠谱的人偏多
& & 15:04:44 +08:00
我就在试着写
在试着beego
revel在公司有点问题
先放着
好就好在中文啊 文档看起来方便
个人比较不喜欢beego那个代码风格。。。
& & 15:56:46 +08:00
go是用来写服务器、基础设施的,用来写web业务代码,到处是error check累不累啊。
& & 16:21:44 +08:00
换到其他语言不是一样要try...except嘛?
& & 17:22:13 +08:00
不喜欢框架, net/http html/template 自己动手。
& & 19:09:42 +08:00
在写业务代码的时候, 如果存在try catch,通常意味着代码写错了,或者框架选错了。
& & 19:54:54 +08:00
golang-nuts里关于这个问题有过一个非常好的回复,大意就是Go的标准库已经帮你做好了太多东西,以至于没有必要再选用框架。我是半业余开发者,从go刚推出就开始作为自己的主力语言,最开始的一年多基本上就是在折腾自己的框架,到exp.template推出(也就是现在的template包),基本上就稳定了。url处理是很简单的,template现有的已经很不错了,真正有工作量的部分就是ORM。因此,建议选择一个好的orm,其余部分自己动手。
& & 21:26:05 +08:00
我也不太喜欢 beego 用法的那个代码风格。
& & 10:52:53 +08:00
@ 但是在go里面返回error的目的包含了平时数据处理的错误以及不可预知的错误。
比如得到一个json字符串,你在unmarshal的时候发现它不符合json的语法,这时候go会返回error,但是其他语言可能就是try catch了。这并不是框架或者代码的问题,当然也可以事先检查,但是比起直接返回error不是会更麻烦?
或者读取一个文件,发现文件不存在,这个步骤肯定是省不了的。只是go把其他语言的一些正常的逻辑判断放在了check error里面了
& & 23:09:27 +08:00
beego挺垃圾的,作者自我感觉良好,实际上水平不怎么样。
& & 19:44:03 +08:00
& & 17:10:17 +08:00
再多的评论也比不了自己动手测试一把
& & 16:59:47 +08:00
第一我的态度很端正,没有你们说的这些什么大牛不大牛,我的出发点一直是想做一些有用的东西让大家玩。从来没有圈地或者自我感觉良好这样的。我的水平确实不是最好的,我做的那些也是自己平时项目中积累的东西,如果你们觉得那些不好我很欢迎你们指出来,欢迎你们指导。
我既然愿意把代码分享出来,就愿意接受大家的批评和指正。如果你们觉得写的比我好,我非常欢迎你们分享出来,这样整个的Go技术圈才会越来越好。
目前beego系统已经被各大公司应用于内部的系统开发,稳定性和性能都得到了考证,当然我们还有很多需要改进的地方,所以你们如果不满意,那么不爽欢迎提出你们的意见。
& & 15:28:53 +08:00
谢大(@astaxie)没有上面说的那样子,估计是在GO编程群里面水的太狠了被T了吧。故而记仇了吧。
& & 16:13:39 +08:00
@ beego只能说是可以工作,beego用golang来做传统的MVC,感觉路子不对,写出来的代码没有质感。这个是一开始设计上的问题。不是说别人能够马上分享一两段代码纠正的。但凡做过开源的,动不动就喜欢说,有本事你分享段代码来看看啊。
实际上在做开源的时候,很多人都喜欢写出一个东西后就开源出来。这样确实是贡献,但是有没有感觉现在的开源代码质量越来越低了。
像redis这样的项目大家都佩服,你说技术难度,很多做C语言的人都能写出来。但是还是佩服他。因为他写出来的质量很高。代码和设计都很有质感。
同时在golang上包装一层弱框架,想不稳定都难。
& & 16:17:31 +08:00
@ 就你最腹黑
& & 08:48:37 +08:00
用golang写个流媒体服务器怎么样? 我看golang跟nodejs并发不相上下,但是cpu占用低
& & 20:53:30 +08:00
@ 其实感觉您修行很深。您也来一发
& & 14:24:26 +08:00
& & 14:43:38 +08:00
@ 基于golang之上的弱框架,想不稳定都难,这个结论你怎么的出来的啊?按照你的逻辑,什么东西都得依赖最原始的包来开发?
第二,传统的MVC我觉得挺好啊,路子对不对,不是你说不对就不对,你写过几行代码啊?如果你觉得路子对的话,可以拿出来一些可行的路子出来呢。
第三,这个开源没有强制别人喜欢不喜欢,有些人就是不喜欢beego的执行方式,完全没问题啊,就喜欢用简单地,例如webgo、martini这样的框架,因为代码就那么几个文件。
比较受不了你说别人一套一套,自己什么屁都不是。
& & 14:51:52 +08:00
新人表示beego用起来还不错,易上手,文档齐全
& & 17:02:28 +08:00
@ 做好你自己,让他们喷去吧!
& & 21:17:19 +08:00
@ 走自己的路,让别人去吹吧!
& & 21:33:26 +08:00
我觉得一个好的框架,就应该是简约的。写出来的代码有质感的。但是你只看到了稳定性和性能
1 稳定性 当然这个很重要,如果只是弱包装一层,然后说很稳定,试问弱包装一层,怎么才能不稳定?既然弱包装很容易稳定,那么稳定性就不应该是你强调的特性。(我从来没说过要什么从原始开发包写)
2 性能 我不觉得,写几个静态测试,然后测试出框架的性能有任何意义。静态测试高那么一点或者低那么一点点,重要么?
3 我自己也写了一个小框架,我自己还不满意,不敢丢人。我对自己的要求比较高。我上面说过了,做过开源的人,就喜欢动不动就说你拿一行代码来看看啊
4 既然不强制别人喜欢不喜欢,那你说这些干嘛呢,我有不喜欢的权利。你刚好也在说一套做一套。
5 自我感觉,写代码质量比你高,你的代码在我眼里屁也不是。光追求完成功能,没有任何美感(包括代码,包括设计的美感)的代码在我眼里都是垃圾。就好像C语言之父说的, UNIX很简单。但需要有一定天赋的人才能理解这种简单。你的代码缺少这种看似简单东西。
6 随便打开了一个文件 /astaxie/beego/blob/master/router.go
8层嵌套,看的欲望都没有了,哥,你这是在写代码啊?
难怪写稳定,对你来说是一件很重要的事情。
7 我又乱点了一个文件,/astaxie/beego/blob/master/orm/db.go 12层嵌套
8 以上代码我并没有挑选,随机点的。一共点了5个文件,还有一些其他问题。
10 现在,我发现用你现在写代码的模式去写框架,给你谈代码质感,谈简约,还引用了大神的名言是多余的,对不起。
& & 22:57:56 +08:00
@ 初略的看了下,我觉得很好呀。
& & 03:16:17 +08:00 via iPhone
@ beego里面的有的代码让人没有看下去的欲望。
之前在对比revel beego 和
Martini ,看到beego某个入口函数有一千行,然后真心觉得有点囧
& & 08:39:03 +08:00
但是作者不这么认为,他认为,能工作就可以了。代码质量都是浮云,代码美感都是浮云,设计的美感都是浮云。就像我上面说的,我现在明白了,为什么来说他把稳定性看得很重要,因为他写代码的模式,要写稳定真不容易。
我其实很想问其他人, 看到这段代码的感受如何
我也很想问作者, 写出这段代码的感受如何.
& & 08:47:39 +08:00
上下翻动,还有很多问题。
& & 09:03:52 +08:00
作为一个刚转web开发的新手,表示beego的API还是比较适合新手入门的,没用过其他框架不好说其他的是否更好用。
不过看了 @ 列出的几个代码段,确实觉得beego在保证稳定性和功能的前提下要关注下代码风格。任何代码从产生的一刻起就会是逐渐劣化的过程,所以才会有敏捷开发提倡的小步前进、不断重构来保持代码质量。
& & 09:22:00 +08:00
@ 我想说的不仅仅是代码风格, 我想说的是能写出这样的代码, 是在证明我上面说的其他观点。
& & 09:25:58 +08:00
@ 我们写代码的目的确实是完成功能,但是为了轻松的完成功能,我们写代码的时候会有一些常见的化简手段。无论是设计上还是实现上都会这样。而不是进一步增加复杂度,beego的很多代码,是在人为的增加复杂度。复杂度一增加,很多其他问题会随之而来。这是其一,其二是如果按照复杂的方式写代码,写出来的东西是毫无质感的,如果是写框架,那么以后用这个框架写的代码也毫无质感了。
& & 09:36:28 +08:00
@ 现在beego能立马着手改进的主要也只有代码风格了,像你说的架构的问题首先意见不能统一其次也不是一时半会儿能改好的。代码风格好,用个可能不是太恰当的比喻,一白遮百丑。
& & 09:45:18 +08:00
@ 这个其实不是最重要的,如果是简单的设计,简单的实现,代码风格自然就好了,所以代码风格只是表象,核心问题不是这个。
非要一开始搞这么烂,这么复杂,然后花很大精力去解决带来的问题,就好像是捅自己一刀,然后再去鏠伤口,然后伤口缝好了,留下一个丑陋的伤疤,还觉得自己很牛逼,居然缝好了这么难逢的伤口。问题的关键是为什么要捅自己一刀?
& & 09:58:23 +08:00
@ 对,我们的目的是一样的。我的意思是如果一个人写代码时刻注意着要写得风格良好,那会逼得他不得不有精简的设计和实现,才能写得好看。你是要求从内而外的因为核心好所以全都好,我是从外到内加了约束条件首先让面子好看再让里子也不至于偏差得远了。我觉得相对而言你的做法可能对人员水平要求更高些。
& & 10:08:52 +08:00
我虽然是go新手,但是beego的这里太倒胃口了。这是写软件的人自己的问题了,多层嵌套本来就是大忌。
& & 10:11:47 +08:00
@ 要知道这里不是所谓的代码风格能够解决的问题
& & 10:16:55 +08:00
@ 这个问题我在41楼已经说过了。
& & 10:36:12 +08:00
@ 还可以重构啊,开源项目,时间上谈不上紧张?只要有决心总能做好的
& & 10:43:22 +08:00
@ 看第二个连接的历史记录啊。已经是修改+重构很多次的了。是完全没有意向去化简。用你的话说,是写代码的人的问题
& & 11:21:07 +08:00 via Android
比较不能接受的是beego的api变动太频繁,几乎每次升级都有点儿破坏性,都stable v1了,还这样
& & 18:28:44 +08:00
其实连beego代码都没看,看完文档都没欲望了,各种原始的设计,好像一个国产php框架
& & 03:58:20 +08:00
@ &如果是简单的设计,简单的实现,代码风格自然就好了&,这点我在实现gorazor的时候很有体会。设计是很重要的,razor模板本身的优雅设计决定了我可以简单的实现它,并且模板嵌套几乎可以“自动实现”。
& & 05:52:00 +08:00
@ 如果有机会我会把你的razor用到自己的项目中的。
& & 10:03:18 +08:00
期待楼上某些大神给我们一个更好的框架来学习。
& & 10:15:32 +08:00
我能说我看到了一群蝼蚁吗?
& & 10:18:52 +08:00
@,相比于做出这样一个产品的作者来说,你就是个垃圾。
& & 15:53:55 +08:00
@ 你懂技术么?垃圾
& & 13:09:33 +08:00
我的目的是在这找到一个可以上手的框架看看学习, 结果看到毫无意义的骂战。
& & 15:22:57 +08:00
@ 是的
我的本意也是
现在一年都快过去了
我建议可以自己实现一个小框架比较好
我现在觉得那些大框架很多功能用不上没必要。。。
& & 23:03:30 +08:00 via iPhone
刚发现这么一个好玩的贴子,诸神骂战,看着有点小激动
& & 14:45:02 +08:00
我滴天吆,还有这么好玩一贴啊。
& & 14:25:14 +08:00
@ 27楼为什么没有 9,这让处女座怎么办啊,再补一条吧。
ps: 写得不错,不过质感这个词,还真难理解。
& & 10:48:05 +08:00
很多国内的开源,只是说把代码放出来了而已,没几个人能开得懂,更别提给你提交代码了。beego真心不咱样,试图把其它语言的框架换做语言来写而已。并没有发挥出GO自己应有的特点。
& & 18:31:04 +08:00
beego代码没法看啊
& & 10:05:45 +08:00
别喷了都,程序员什么时候都变成这样了,做着婊子骂街的事,聊的是艺术家的感受。人楼主只是求推荐一个go框架,不管你是大神还是菜鸟,能推荐就推荐,不想推荐就别起反作用,谁都从菜鸟过来的,别打击人家的积极性。
如果你是大神,公司开发进度又完成了,完全可以利用闲暇时间,在自己喜欢又擅长的领域做做贡献,分享经验,何乐而不为。
BEEGO好不好我不评价,但是确实我学GO的时候帮到了我,很感谢作者的贡献。
而我看你们喷了几十层楼,屁都没学着。
& & 17:23:10 +08:00
上面吵的人,talk is cheep, show me the code
& & 17:37:44 +08:00
我同意@的看法,代码质量确实不堪,希望作者能听取改正。当然既然是开源项目,应当感谢作者@的无私奉献。一个系统有问题在所难免,大家除了提出意见,有能力和时间精力的也应该作点贡献。一个好的开源系统难以以一已之力就能做好的,大伙给点耐心和奉献点什么吧
& & 08:50:39 +08:00
@ 9 就脏话,略过
& &253 天前 via Android
各路大神,结论呢?
& &244 天前
@ 结论就是放弃 beego,试试别的吧
& &243 天前 via Android
@ 比如呢?哪些值得一试?
& &152 天前
NOTE: The martini framework is no longer maintained.
& &145 天前
我只是来看 revel 和 beego 的比较,似乎没人愿意认真回答题主,竟然骂开了,go 的社区行为准则我这里贴一下先:
1. Treat everyone with respect and kindness.
2. Be thoughtful in how you communicate.
3. Don ’ t be destructive or inflammatory.
& &76 天前
@ 这话就是 u can u up ?呵呵呵
& · & 925 人在线 & 最高记录 2011 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.3 · 65ms · UTC 16:16 · PVG 00:16 · LAX 09:16 · JFK 12:16? Do have faith in what you're doing.

我要回帖

更多关于 golang beego开发框架 的文章

 

随机推荐