文档章节

3、Go HTTP框架Beego - Bee工具简介安装

lee123lee
 lee123lee
发布于 2015/12/09 09:45
字数 2276
阅读 5517
收藏 3

1、Bee工具简介

bee 工具是一个为了协助快速开发 beego 项目而创建的项目,您可以通过 bee 快速创建项目、实现热编译、开发测试以及开发完之后打包发布的一整套从创建、开发到部署的方案。

2、Bee工具安装

您可以通过如下的方式安装 bee 工具:

go get github.com/beego/bee

安装完之后,bee可执行文件默认存放在$GOPATH/bin里面,所以您需要把$GOPATH/bin添加到您的环境变量中,才可以进行下一步。

如何添加环境变量,请自行搜索
如果你本机设置了GOBIN,那么上面的命令就会安装到GOBIN下,请添加GOBIN到你的环境变量中

3、Bee工具命令详解

我们在命令行输入 bee,可以看到如下的信息:

Bee is a tool for managing beego framework.Usage:

    bee command [arguments]The commands are:

    new         create an application base on beego framework
    run         run the app which can hot compile
    pack        compress an beego project
    api         create an api application base on beego framework
    bale        packs non-Go files to Go source files
    version     show the bee & beego version
    generate    source code generator
    migrate     run database migrations

3.1 new命令

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

bee new myproject[INFO] Creating application...
/gopath/src/myproject/
/gopath/src/myproject/conf/
/gopath/src/myproject/controllers/
/gopath/src/myproject/models/
/gopath/src/myproject/static/
/gopath/src/myproject/static/js/
/gopath/src/myproject/static/css/
/gopath/src/myproject/static/img/
/gopath/src/myproject/views/
/gopath/src/myproject/conf/app.conf
/gopath/src/myproject/controllers/default.go
/gopath/src/myproject/views/index.tpl
/gopath/src/myproject/main.go
13-11-25 09:50:39 [SUCC] New application successfully created!
myproject
├── conf
│   └── app.conf
├── controllers
│   └── default.go
├── main.go
├── models
├── routers
│   └── router.go
├── static
│   ├── css
│   ├── img
│   └── js
├── tests
│   └── default_test.go
└── views
    └── index.tpl
    
8 directories, 4 files

3.2 api命令

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

bee api apiproject
create app folder: /gopath/src/apiproject
create conf: /gopath/src/apiproject/conf
create controllers: /gopath/src/apiproject/controllers
create models: /gopath/src/apiproject/models
create tests: /gopath/src/apiproject/tests
create conf app.conf: /gopath/src/apiproject/conf/app.conf
create controllers default.go: /gopath/src/apiproject/controllers/default.go
create tests default.go: /gopath/src/apiproject/tests/default_test.go
create models object.go: /gopath/src/apiproject/models/object.go
create main.go: /gopath/src/apiproject/main.go

这个项目的目录结构如下:

apiproject
├── conf
│   └── app.conf
├── controllers
│   └── object.go
│   └── user.go
├── docs
│   └── doc.go
├── main.go
├── models
│   └── object.go
│   └── user.go
├── routers
│   └── router.go
└── tests
    └── default_test.go

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

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

3.3 run命令

我们在开发 Go 项目的时候最大的问题是经常需要自己手动去编译再运行,bee run 命令是监控 beego 的项目,通过 fsnotify 监控文件系统。这样我们在开发过程中就可以实时的看到项目修改之后的效果:

bee run
13-11-25 09:53:04 [INFO] Uses 'myproject' as 'appname'
13-11-25 09:53:04 [INFO] Initializing watcher...
13-11-25 09:53:04 [TRAC] Directory(/gopath/src/myproject/controllers)
13-11-25 09:53:04 [TRAC] Directory(/gopath/src/myproject/models)
13-11-25 09:53:04 [TRAC] Directory(/gopath/src/myproject)
13-11-25 09:53:04 [INFO] Start building...
13-11-25 09:53:16 [SUCC] Build was successful
13-11-25 09:53:16 [INFO] Restarting myproject ...
13-11-25 09:53:16 [INFO] ./myproject is running...

我们打开浏览器就可以看到效果 http://localhost:8080/:

如果我们修改了 Controller 下面的 default.go 文件,我们就可以看到命令行输出:

13-11-25 10:11:20 [EVEN] "/gopath/src/myproject/controllers/default.go": DELETE|MODIFY
13-11-25 10:11:20 [INFO] Start building...
13-11-25 10:11:20 [SKIP] "/gopath/src/myproject/controllers/default.go": CREATE
13-11-25 10:11:23 [SKIP] "/gopath/src/myproject/controllers/default.go": MODIFY
13-11-25 10:11:23 [SUCC] Build was successful
13-11-25 10:11:23 [INFO] Restarting myproject ...
13-11-25 10:11:23 [INFO] ./myproject is running...

刷新浏览器我们看到新的修改内容已经输出

3.4 test命令

这是基于 go test 进行封装的一个命令,执行 beego 项目 test 目录下的测试用例:

bee test apiproject
13-11-25 10:46:57 [INFO] Initializing watcher...
13-11-25 10:46:57 [TRAC] Directory(/gopath/src/apiproject/controllers)
13-11-25 10:46:57 [TRAC] Directory(/gopath/src/apiproject/models)
13-11-25 10:46:57 [TRAC] Directory(/gopath/src/apiproject)
13-11-25 10:46:57 [INFO] Start building...
13-11-25 10:46:58 [SUCC] Build was successful
13-11-25 10:46:58 [INFO] Restarting apiproject ...
13-11-25 10:46:58 [INFO] ./apiproject is running...
13-11-25 10:46:58 [INFO] Start testing...
13-11-25 10:46:59 [TRAC] ============== Test Begin ===================
PASS
ok      apiproject/tests    0.100s
13-11-25 10:47:00 [TRAC] ============== Test End ===================
13-11-25 10:47:00 [SUCC] Test finish

3.5 pack命令

pack 目录用来发布应用的时候打包,会把项目打包成 zip 包,这样我们部署的时候直接打包之后的项目上传,解压就可以部署了:

bee pack
app path: /gopath/src/apiproject
GOOS darwin GOARCH amd64
build apiproject
build success
exclude prefix:exclude suffix: .go:.DS_Store:.tmp
file write to `/gopath/src/apiproject/apiproject.tar.gz`

我们可以看到目录下有如下的压缩文件:

rwxr-xr-x  1 astaxie  staff  8995376 11 25 22:46 apiproject
-rw-r--r--  1 astaxie  staff  2240288 11 25 22:58 apiproject.tar.gz
drwxr-xr-x  3 astaxie  staff      102 11 25 22:31 conf
drwxr-xr-x  3 astaxie  staff      102 11 25 22:31 controllers
-rw-r--r--  1 astaxie  staff      509 11 25 22:31 main.go
drwxr-xr-x  3 astaxie  staff      102 11 25 22:31 models
drwxr-xr-x  3 astaxie  staff      102 11 25 22:31 tests

3.6 bale命令

这个命令目前仅限内部使用,具体实现方案未完善,主要用来压缩所有的静态文件变成一个变量申明文件,全部编译到二进制文件里面,用户发布的时候携带静态文件,包括 js、css、img 和 views。最后在启动运行时进行非覆盖式的自解压。

3.7 version命令

这个命令是动态获取bee、beego和Go的版本,这样一旦用户出现错误,可以通过改命令来查看当前的版本

$ bee version
bee   :1.2.2
beego :1.4.2
Go    :go version go1.3.3 darwin/amd64

3.8 generate命令

这个命令是用来自动化的生成代码的,包含了从数据库一键生成model,还包含了scaffold的,通过这个命令,让大家开发代码不再慢

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

3.9 migrate命令

这个命令是应用的数据库迁移命令,主要是用来每次应用升级,降级的SQL管理。

bee migrate [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
    run all outstanding migrations    
    -driver: [mysql | postgresql | sqlite], the default is mysql    
    -conn:   the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test

bee migrate rollback [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
    rollback the last migration operation    
    -driver: [mysql | postgresql | sqlite], the default is mysql    
    -conn:   the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test

bee migrate reset [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
    rollback all migrations    
    -driver: [mysql | postgresql | sqlite], the default is mysql    
    -conn:   the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test

bee migrate refresh [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
    rollback all migrations and run them all again    
    -driver: [mysql | postgresql | sqlite], the default is mysql    
    -conn:   the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test


4、Bee工具配置文件

您可能已经注意到,在 bee 工具的源码目录下有一个 bee.json 文件,这个文件是针对 bee 工具的一些行为进行配置。该功能还未完全开发完成,不过其中的一些选项已经可以使用:

  • "version": 0:配置文件版本,用于对比是否发生不兼容的配置格式版本。

  • "go_install": false:如果您的包均使用完整的导入路径(例如:github.com/user/repo/subpkg),则可以启用该选项来进行go install 操作,加快构建操作。

  • "watch_ext": []:用于监控其它类型的文件(默认只监控后缀为 .go 的文件)。

  • "dir_structure":{}:如果您的目录名与默认的 MVC 架构的不同,则可以使用该选项进行修改。

  • "cmd_args": []:如果您需要在每次启动时加入启动参数,则可以使用该选项。

  • "envs": []:如果您需要在每次启动时设置临时环境变量参数,则可以使用该选项。


© 著作权归作者所有

lee123lee

lee123lee

粉丝 53
博文 144
码字总数 122159
作品 1
闵行
高级程序员
私信 提问
Go语言及Web框架Beego环境搭建手顺

本文涉及软件均以截至到2013年10月12日的最新版本为准 1、 相关软件准备: 1) go1.2rc1.windows-386.msi,对应32位windows系统安装使用 下载地址: https://code.google.com/p/go/downloads...

nop4ss
2015/08/06
1K
0
【Go语言】【17】GO语言杂谈

本章节原想进一步写并写的相关知识,但今天不在状态临时改为杂谈,原因有二 我也想静静 (参见秋裤大叔) 对前面没有涉及到的问题给一个交待 一、安装Git 当下是一个开源的时代,经常遛论坛的...

qingkechina
2015/08/03
0
0
Linux下golang+bee环境安装

下载各个程序安装包 golang安装包地址:https://www.golangtc.com/download beego安装包地址:https://github.com/astaxie/beego bee工具安装包地址:https://github.com/beego/bee 安装gol...

Vaedit
2018/03/20
0
0
和lock一起学beego 博客系统开发为例(二)

接着上篇来写《和lock一起学beego 博客系统开发为例(一)》 这篇主要完成以下事项: 1.beego框架,项目的建立 2. 表数据的设计 3. 模型的建立 (这篇在公司里写的,用的是win机器) 一、bee...

lock-li
2016/06/14
1K
0
mac下安装beego,使用bee创建和运行项目

安装golang就不详细说了,下载pgk包安装,默认安装安装在 /usr/local/go 目录。 程序会自动设置环境变量,go env 可查看目前的go的环境变量。 现在GO可以执行了,在命令行输入 go version可查...

东子
2016/10/20
2.6K
2

没有更多内容

加载失败,请刷新页面

加载更多

Nebula 架构剖析系列(二)图数据库的查询引擎设计

摘要 上文(存储篇)说到数据库重要的两部分为存储和计算,本篇内容为你解读图数据库 Nebula 在查询引擎 Query Engine 方面的设计实践。 在 Nebula 中,Query Engine 是用来处理 Nebula 查询...

NebulaGraph
27分钟前
10
0
表示数值的字符串

Garphy
30分钟前
4
0
将.docx文件转化为.pdf文件

将.docx文件转化为.pdf文件 在需要转化.docx为.pdf的文件夹中打开powershell然后运行该程序,可以将文件夹下所有.docx文件转化为.pdf文件。 from win32com.client import Dispatch, constant...

davidwbnu
32分钟前
6
0
技术沙龙|原来落地AI应用是这么回事儿!

目前人工智能已经迈入应用落地之年,作为备受关注的话题,在重磅政策的加持下市场规模迅速扩大并渗透到各行各业的形势越发鲜明。在此背景下,作为国内不容忽视的创新企业之一,京东AI依托于N...

京东云技术新知
34分钟前
6
0
linux交互界面颜色配置

PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h\[\e[35;40m\]\W\[\e[0m\]]\\$ " export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });user=$(whoami); echo $(date "......

SibylY
35分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部