3、Go|3、Go HTTP框架Beego - Bee工具简介安装
为什么80%的码农都做不了架构师?>>>
文章图片
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:newcreate an application base on beego framework
runrun the app which can hot compile
packcompress an beego project
apicreate an api application base on beego framework
balepacks non-Go files to Go source files
versionshow the bee & beego version
generatesource code generator
migraterun 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.tpl8 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
okapiproject/tests0.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`
【3、Go|3、Go HTTP框架Beego - Bee工具简介安装】我们可以看到目录下有如下的压缩文件:
rwxr-xr-x1 astaxiestaff8995376 11 25 22:46 apiproject
-rw-r--r--1 astaxiestaff2240288 11 25 22:58 apiproject.tar.gz
drwxr-xr-x3 astaxiestaff102 11 25 22:31 conf
drwxr-xr-x3 astaxiestaff102 11 25 22:31 controllers
-rw-r--r--1 astaxiestaff509 11 25 22:31 main.go
drwxr-xr-x3 astaxiestaff102 11 25 22:31 models
drwxr-xr-x3 astaxiestaff102 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 controllersbee generate view [viewpath]
generate CRUD view in viewpathbee 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 filebee generate test [routerfile]
generate testcasebee 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)/testbee 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)/testbee 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)/testbee 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": []
:如果您需要在每次启动时设置临时环境变量参数,则可以使用该选项。
转载于:https://my.oschina.net/exit/blog/541232
推荐阅读
- android第三方框架(五)ButterKnife
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- Shell-Bash变量与运算符
- 清明,是追思、是传承、是感恩。
- 牛人进化+|牛人进化+ 按自己的意愿过一生
- 七老修复好敏感、角质层薄、红血丝
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- 画解算法(1.|画解算法:1. 两数之和)
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。