1. 创建项目命令(new):
bee new project_name (project_name 为你自己定义的项目名字)
以下是此命令的使用效果,我们使用 bee 来创建一个后台权限项目
guoshijiangdeMacBook-Pro:GoWorkspace guoshijiang$ bee new beego_admin 2020/08/23 13:55:03 INFO ▶ 0001 generate new project support go modules. 2020/08/23 13:55:03 INFO ▶ 0002 Creating application... create /Users/guoshijiang/GoWorkspace/beego_admin/go.mod create /Users/guoshijiang/GoWorkspace/beego_admin/ create /Users/guoshijiang/GoWorkspace/beego_admin/conf/ create /Users/guoshijiang/GoWorkspace/beego_admin/controllers/ create /Users/guoshijiang/GoWorkspace/beego_admin/models/ create /Users/guoshijiang/GoWorkspace/beego_admin/routers/ create /Users/guoshijiang/GoWorkspace/beego_admin/tests/ create /Users/guoshijiang/GoWorkspace/beego_admin/static/ create /Users/guoshijiang/GoWorkspace/beego_admin/static/js/ create /Users/guoshijiang/GoWorkspace/beego_admin/static/css/ create /Users/guoshijiang/GoWorkspace/beego_admin/static/img/ create /Users/guoshijiang/GoWorkspace/beego_admin/views/ create /Users/guoshijiang/GoWorkspace/beego_admin/conf/app.conf create /Users/guoshijiang/GoWorkspace/beego_admin/controllers/default.go create /Users/guoshijiang/GoWorkspace/beego_admin/views/index.tpl create /Users/guoshijiang/GoWorkspace/beego_admin/routers/router.go create /Users/guoshijiang/GoWorkspace/beego_admin/tests/default_test.go create /Users/guoshijiang/GoWorkspace/beego_admin/main.go 2020/08/23 13:55:03 SUCCESS ▶ 0003 New application successfully created!
bee new 项目命令会产生这些文件,创建的项目为 MVC 模式, controller 下面是控制器层的代码,Model 下面是数据库操作的代码,views 下面为视图文件。后面的文章中我们将会使用 beego 和 layui 为大家做后台权限管理加网站的项目。
2. 创建 API 项目命令(api)
bee api project_name project_name 为你自定义的项目的名字
上面的 new 命令是用来新建 Web 项目,不过很多用户使用 beego 来开发 API 应用。所以这个 api 命令就是用来创建 API 应用的,执行命令之后如下所示:
guoshijiangdeMacBook-Pro:GoWorkspace guoshijiang$ bee api test ______ | ___ \ | |_/ / ___ ___ | ___ \ / _ \ / _ \ | |_/ /| __/| __/ \____/ \___| \___| v1.11.0 2020/08/23 14:03:13 INFO ▶ 0001 generate api project support GOPATH ______ | ___ \ | |_/ / ___ ___ | ___ \ / _ \ / _ \ | |_/ /| __/| __/ \____/ \___| \___| v1.11.0 2020/08/23 14:03:13 WARN ▶ 0002 You current workdir is not inside $GOPATH/src. 2020/08/23 14:03:13 INFO ▶ 0003 Creating API... create /Users/guoshijiang/go_project/src/test create /Users/guoshijiang/go_project/src/test/conf create /Users/guoshijiang/go_project/src/test/controllers create /Users/guoshijiang/go_project/src/test/tests create /Users/guoshijiang/go_project/src/test/conf/app.conf create /Users/guoshijiang/go_project/src/test/models create /Users/guoshijiang/go_project/src/test/routers/ create /Users/guoshijiang/go_project/src/test/controllers/object.go create /Users/guoshijiang/go_project/src/test/controllers/user.go create /Users/guoshijiang/go_project/src/test/tests/default_test.go create /Users/guoshijiang/go_project/src/test/routers/router.go create /Users/guoshijiang/go_project/src/test/models/object.go create /Users/guoshijiang/go_project/src/test/models/user.go create /Users/guoshijiang/go_project/src/test/main.go 2020/08/23 14:03:13 SUCCESS ▶ 0004 New API successfully created!
api 创建的项目比 new 创建的项目少了视图层,原因是 api 项目不需要使用 beego 的模版去实现界面的开发,只需提供api 给前端的朋友用就行了。
上面还有一个问题, api 创建的项目支持 gopath, 如果你本地配置了 gopath , 那么不管你在那个目录下执行 bee api project , 这个项目的会创建在gopath 下面。
3. 运行项目命令
bee run project_name project_name 为你自定义的项目的名字
执行命令效果如下:
guoshijiangdeMacBook-Pro:GoWorkspace guoshijiang$ cd beego_admin/ guoshijiangdeMacBook-Pro:beego_admin guoshijiang$ guoshijiangdeMacBook-Pro:beego_admin guoshijiang$ bee run ______ | ___ \ | |_/ / ___ ___ | ___ \ / _ \ / _ \ | |_/ /| __/| __/ \____/ \___| \___| v1.11.0 2020/08/23 14:07:50 WARN ▶ 0001 Running application outside of GOPATH 2020/08/23 14:07:50 INFO ▶ 0002 Using 'beego_admin' as 'appname' 2020/08/23 14:07:50 INFO ▶ 0003 Initializing watcher... go: finding module for package github.com/shiena/ansicolor go: found github.com/shiena/ansicolor in github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 beego_admin/controllers beego_admin/routers beego_admin 2020/08/23 14:07:55 SUCCESS ▶ 0004 Built Successfully! 2020/08/23 14:07:55 INFO ▶ 0005 Restarting 'beego_admin'... 2020/08/23 14:07:55 SUCCESS ▶ 0006 './beego_admin' is running... 2020/08/23 14:07:55.324 [I] [asm_amd64.s:1373] http server Running on http://:8080 2020/08/23 14:07:55.324 [C] [asm_amd64.s:1373] ListenAndServe: listen tcp :8080: bind: address already in use
先 cd 到我们创建的项目目录下面,然后执行 bee run 命令,就可以运行项目,当然,bee run 命令也可以带参数执行,关于 bee run 带参数执行,在后面的项目中我们会讲解到。
4. 打包命令 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
5. bale 命令
这个命令目前仅限内部使用,具体实现方案未完善,主要用来压缩所有的静态文件变成一个变量申明文件,全部编译到二进制文件里面,用户发布的时候携带静态文件,包括 js、css、img 和 views。最后在启动运行时进行非覆盖式的自解压。
6. version 命令
这个命令是动态获取 bee、beego 和 Go 的版本,这样一旦用户出现错误,可以通过该命令来查看当前的版本
$ bee version bee :1.2.2 beego :1.4.2 Go :go version go1.3.3 darwin/amd64
7. 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
8. 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
9.dockerize 命令
这个命令可以通过生成Dockerfile文件来实现docker化你的应用。
例子: 生成一个以1.6.4版本Go环境为基础镜像的Dockerfile,并暴露9000端口:
$ bee dockerize -image="library/golang:1.6.4" -expose=9000 ______ | ___ \ | |_/ / ___ ___ | ___ \ / _ \ / _ \ | |_/ /| __/| __/ \____/ \___| \___| v1.6.2 2016/12/26 22:34:54 INFO ▶ 0001 Generating Dockerfile... 2016/12/26 22:34:54 SUCCESS ▶ 0002 Dockerfile generated.