Beego介绍

  beego我认为是go初学者比较容易上手的一门MVC Web框架。简单易懂,最重要的一点就是提供了中文文档,这对于我这种英语能力比较差的人来说就是福音。

  beego的官网上是这么介绍beego的:“beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架”。从中可以看出beego可以快速开发API接口、可以实现服务端的各种应用

Beego官网

  beego官网 : https://beego.me/

  github : https://github.com/beego

Beego安装

  beego 包含一些示例应用程序以帮您学习并使用 beego 应用框架。

  您需要安装 Go 1.1+ 以确保所有功能的正常使用。

  你需要安装 Beego 和 Bee 的开发工具:

$ go get github.com/astaxie/beego
$ go get github.com/beego/bee

  注意:

  1. beege和bee是两个概念。beego是框架,bee是工具,是命令。
  2. 在安装Beego前,先确认是否将$GOPATH/bin写入GO环境中。

Bee工具的使用

 安装完成Bee后,在控制台输入bee

Bee is a tool for managing beego framework.

Usage:

    bee command [arguments]

The commands are:

    new         Create a Beego application
run run the app and start a Web server for development
pack Compress a beego project into a single file
api create an API beego application
hprose create an rpc application use hprose base on beego framework
bale packs non-Go files to Go source files
version prints the current Bee version
generate source code generator
migrate run database migrations
fix fix the beego application to make it compatible with beego 1.6 Use "bee help [command]" for more information about a command. Additional help topics: Use "bee help [topic]" for more information about that topic.

主要有以上10个命令,下面说几个常用的命令

 new命令

  new 命令是新建一个 Web 项目,我们在命令行下执行 bee new <项目名> 就可以创建一个新的项目。但是注意该命令必须在 $GOPATH/src 下执行。最后会在 $GOPATH/src 相应目录下生成如下目录结构的项目:

bogon:src zuxingyu$ bee new cnblogs
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.5.2
2016/10/31 22:16:11 [INFO] Creating application...
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/conf/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/controllers/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/models/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/routers/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/tests/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/static/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/static/js/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/static/css/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/static/img/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/views/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/conf/app.conf
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/controllers/default.go
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/views/index.tpl
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/routers/router.go
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/tests/default_test.go
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/main.go
2016/10/31 22:16:11 [SUCC] New application successfully created!

  这样一个beego框架的Go项目就生成了

 api命令

  上面的 new 命令是用来新建 Web 项目,不过很多用户使用 beego 来开发 API 应用。所以这个 api 命令就是用来创建 API 应用的,属于纯服务端业务。执行命令之后如下所示:

bogon:src zuxingyu$ bee api cnblogsApi
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.5.2
2016/10/31 22:19:51 [INFO] Creating API...
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/conf
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/controllers
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/tests
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/conf/app.conf
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/models
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/routers/
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/controllers/object.go
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/controllers/user.go
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/tests/default_test.go
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/routers/router.go
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/models/object.go
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/models/user.go
create /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogsApi/main.go
2016/10/31 22:19:51 [SUCC] New API successfully created!

  从上面的目录我们可以看到和 Web 项目相比,少了 static 和 views 目录,多了一个 test 模块,用来做单元测试的。

  同时,该命令还支持一些自定义参数自动连接数据库创建相关model和controller:
  bee api [appname] [-tables=“”] [-driver=mysql] [-conn=root:@tcp(127.0.0.1:3306)/test]
  如果conn参数为空则创建一个示例项目,否则将基于链接信息链接数据库创建项目。

 run命令

  bee run 命令是监控 beego 的项目,通过 fsnotify监控文件系统。但是注意该命令必须在$GOPATH/src/appname下执行。 
bogon:src zuxingyu$ cd cnblogs
bogon:cnblogs zuxingyu$ bee run
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.5.2
2016/10/31 22:22:30 [INFO] Using 'cnblogs' as 'appname'
2016/10/31 22:22:30 [INFO] Initializing watcher...
2016/10/31 22:22:30 [TRAC] Directory(/Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/controllers)
2016/10/31 22:22:30 [TRAC] Directory(/Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs)
2016/10/31 22:22:30 [TRAC] Directory(/Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/routers)
2016/10/31 22:22:30 [TRAC] Directory(/Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/tests)
2016/10/31 22:22:30 [INFO] Start building...
2016/10/31 22:22:34 [SUCC] Build was successful
2016/10/31 22:22:34 [INFO] Restarting cnblogs ...
2016/10/31 22:22:34 [INFO] ./cnblogs is running...
2016/10/31 22:22:34 [I] [asm_amd64.s:2086] http server Running on http://:8080

  注意:Linux/Mac Os 在命令行运行时,结束直接用Ctrl + C 结束

 pack命令    

pack 目录用来发布应用的时候打包,会把项目打包成 zip 包,这样我们部署的时候直接把打包之后的项目上传,解压就可以部署了。可能在后面工作中会使用Docker去做容器。具体的在后面使用后告诉大家。

bogon:cnblogs zuxingyu$ bee pack
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.5.2
2016/10/31 22:28:03 Packaging application: /Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs
2016/10/31 22:28:03 Building application...
2016/10/31 22:28:03 Env: GOOS=darwin GOARCH=amd64
2016/10/31 22:28:06 Build successful
2016/10/31 22:28:06 Excluding relpath prefix: .
2016/10/31 22:28:06 Excluding relpath suffix: .go:.DS_Store:.tmp
2016/10/31 22:28:07 Writing to output: `/Users/zuxingyu/Documents/GoWorkSpace/src/cnblogs/cnblogs.tar.gz`

  使用命令后会打出一个tar.gz包。放入Linux/Mac OS 解压即可。

 version 命令

  这个命令是动态获取bee、beego和Go的版本,这样一旦用户出现错误,可以通过该命令来查看当前的版本,没啥需要解释的。只是查看下当前版本。

bogon:cnblogs zuxingyu$ bee version
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.5.2 ├── Beego : 1.7.1
├── GoVersion : go1.7.1
├── GOOS : darwin
├── GOARCH : amd64
├── NumCPU : 4
├── GOPATH : /Users/zuxingyu/Documents/GoWorkSpace
├── GOROOT : /usr/local/go
├── Compiler : gc
└── Date : Monday, 31 Oct 2016

 generate 命令

  这是一个重要的命令,尤其是生成api项目时,generate docs可以生成swagger的文档。

bee generate scaffold [scaffoldname] [-fields=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
The generate scaffold command will do a number of things for you.
-fields: a list of table fields. Format: field:type, ...
-driver: [mysql | postgres | sqlite], the default is mysql
-conn: the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test
example: bee generate scaffold post -fields="title:string,body:text" bee generate model [modelname] [-fields=""]
generate RESTful model based on fields
-fields: a list of table fields. Format: field:type, ... bee generate controller [controllerfile]
generate RESTful controllers bee generate view [viewpath]
generate CRUD view in viewpath bee generate migration [migrationfile] [-fields=""]
generate migration file for making database schema update
-fields: a list of table fields. Format: field:type, ... bee generate docs
generate swagger doc file bee generate test [routerfile]
generate testcase bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]
generate appcode based on an existing database
-tables: a list of table names separated by ',', default is empty, indicating all tables
-driver: [mysql | postgres | sqlite], the default is mysql
-conn: the connection string used by the driver.
default for mysql: root:@tcp(127.0.0.1:3306)/test
default for postgres: postgres://postgres:postgres@127.0.0.1:5432/postgres
-level: [1 | 2 | 3], 1 = models; 2 = models,controllers; 3 = models,controllers,router

 这些都是我目前常用的命令。如果有其他命令以后可以开个专题专门实验这些命令。

 

Go beego框架使用笔记(一)的更多相关文章

  1. 框架Hibernate笔记系列 基础Session

    标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...

  2. golang学习之beego框架配合easyui实现增删改查及图片上传

    golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...

  3. phalcon(费尔康)框架学习笔记

    phalcon(费尔康)框架学习笔记 http://www.qixing318.com/article/phalcon-framework-to-study-notes.html 目录结构   pha ...

  4. Yii框架学习笔记(二)将html前端模板整合到框架中

    选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...

  5. Web框架——Django笔记

    Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序   ...

  6. JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue

    前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...

  7. JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序

    前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...

  8. JavaSE中Map框架学习笔记

    前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...

  9. JavaSE中线程与并行API框架学习笔记1——线程是什么?

    前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位 ...

随机推荐

  1. supervisor提高nodejs调试效率

    1.NodeJS环境安装 2.安装supervisor npm install  supervisor -g (表示安装到全局路径下) 开发nodejs程序,调试的时候,无论你修改了代码的哪一部分,都 ...

  2. [51nod1009]数字1的数量

    解题关键:数位dp,对每一位进行考虑,通过过程得出每一位上1出现的次数 1位数的情况: 在解法二中已经分析过,大于等于1的时候,有1个,小于1就没有. 2位数的情况: N=13,个位数出现的1的次数为 ...

  3. DOM读取和修改节点对象属性

    一.获取和修改元素间的内容(3种) 1.innerHTML 获得/设置元素开始标签和结束标签之间的html原文 固定套路:1.删除父元素下所有子元素:parent.innerHTML="&q ...

  4. 稀疏编码概率解释(基于1996年Olshausen与Field的理论 )

    一.Sparse Coding稀疏编码 稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效地表示样本数据.稀疏编码算法的目的就是找到一组基向量 ,使得我们能将输入向量 表示为这些 ...

  5. HDU 2554 N对数的排列问题 ( 数学 )

    题目链接 Problem Description 有N对双胞胎,他们的年龄分别是1,2,3,--,N岁,他们手拉手排成一队到野外去玩,要经过一根独木桥,为了安全起见,要求年龄大的和年龄小的排在一起,好 ...

  6. opencv_人脸检测、模型训练、人脸识别

    人脸检测.模型训练.人脸识别 2018-08-15 今天给大家带来一套人脸识别一个小案例,主要是帮助小伙伴们解决如何入门OpenCV人脸识别的问题,现在的AI行业比较火热,AI技术的使用比较广泛.就拿 ...

  7. windows注册表存储位置

    win7/8/10 通常情况: HKEY_LOCAL_MACHINE \SYSTEM : \system32\config\system HKEY_LOCAL_MACHINE \SAM : \syst ...

  8. HTTP===通用首部字段的各种指令解释

    Cache-Control 通过指定首部字段 Cache-Control 的指令,就能操作缓存的工作机制. 指令的参数是可选的,多个指令之间通过“,”分隔.首部字段 Cache-Control 的指令 ...

  9. platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备【转】

    转自:http://blog.chinaunix.net/uid-25508271-id-2979412.html kernel_init中do_basic_setup()->driver_in ...

  10. ios iphone ipad上iframe的宽度会扩大的解决办法

    这个问题,我从网上查了下,好像是属于ios的bug,android,windows都没有问题. 解决办法,就是在iframe加载完成后,设置 iframe里面body的宽度为多少PX. $(" ...