设为首页 收藏本站
查看: 1104|回复: 0

[经验分享] golang学习笔记5 用bee工具创建项目 bee工具简介

[复制链接]

尚未签到

发表于 2018-9-20 13:08:03 | 显示全部楼层 |阅读模式
  golang学习笔记5 用bee工具创建项目 bee工具简介
  Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架
  https://beego.me/docs/install/bee.md

bee 工具简介
  bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。

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

go get github.com/beego/bee  使用数据库的需要先安装插件,执行下面命令:
  go get github.com/Go-SQL-Driver/MySQL
  执行后会在 $GOPATH/pkg 里面生成对应的文件
DSC0000.png

  

  安装完之后,bee 可执行文件默认存放在 $GOPATH/bin 里面,所以您需要把 $GOPATH/bin 添加到您的环境变量中,才可以进行下一步。
  如何添加环境变量,请看上一篇笔记:http://www.cnblogs.com/zdz8207/p/golang-learn-3.html
  如果你本机设置了 GOBIN,那么上面的命令就会安装到 GOBIN 下,请添加 GOBIN 到你的环境变量中

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
  


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
DSC0001.png

  

打开浏览器就可以看到效果 http://localhost:8080
DSC0002.png

  


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 参数为空则创建一个示例项目,否则将基于链接信息链接数据库创建项目。
  使用数据库的需要先安装插件,执行下面命令:
  go get github.com/Go-SQL-Driver/MySQL
  否则会报错如下:
  cannot find package "github.com/go-sql-driver/mysql" in any of:

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

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...
  如果我们修改了 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...
  

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

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
DSC0003.png

  


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

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

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

  

DSC0004.png   

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
  


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
  


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": []:如果您需要在每次启动时设置临时环境变量参数,则可以使用该选项。
  ---------------------------

QQ群:golang beego技术交流群(316397059)
DSC0005.png


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-598900-1-1.html 上篇帖子: Golang学习笔记:channel 下篇帖子: Golang 字符串转URLCode
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表