Go beego框架使用笔记(一)

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:[email protected]:5432/postgres
    -level:  [1 | 2 | 3], 1 = models; 2 = models,controllers; 3 = models,controllers,router

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

 

时间: 2024-10-24 23:23:43

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

windows下scrapy框架学习笔记—&#39;scrapy&#39; 不是内部或外部命令

最近几天在深入的学习scrapy框架,但是装完各种需要的基础包之后却发现scrapy命令在别的路径下都用不了,我一开始是把python安装在F:\Python路径下的,安装了scrapy后它默认都会安装在这个路径下,scrapy在路径F:\Python\Scripts路径下,我的scrapy命令只能在此路径下用,因此创建什么工程也都只能在此文件下. 想了一下它的工作原理:它在F:\Python\Scripts路径下,就会在Scripts文件下存在一个scrapy批处理文件,那么在DOS下想要命令

golang的beego框架开发时出现的问题纪录

golang的beego框架开发时出现的问题纪录1.数据库并发时问题:[ORM]2017/02/20 23:44:05 -[Queries/default] - [FAIL / db.Query / 15.9ms] - [SELECT mp_wx_account.app_id, mp_wx_account.app_secret FROM mp_wx_develop INNER JOIN mp_wx_account ON mp_wx_account.app_id = mp_wx_develop.a

Web框架——Django笔记

Web框架——Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django——MTV 1.创建Django程序   (注:创建前需注意配置Django环境变量,python2.7和3.5环境变量) a.命令(使用cmd命令创建) django-admin startproject mysite      创建project cd mysite python manage.py startapp app01  

YII框架分析笔记2:组件和事件行为管理

Yii是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.CComponent几乎是所有类的基类,它控制着组件与事件的管理,其方法与属性如下,私有变量$_e数据存放事件(evnet,有些地方叫 hook),$_m数组存放行为(behavior). 组件管理 YII是一个纯oop框架,很多类中的成员变量的受保护或者私有的,CComponent中利用php中的魔术方法__get(),__set()来访问和设置属性,但这些方法的作用远不指这些.下面用__get()来说明 [php] vi

学习ASP.NET MVC框架揭秘笔记目录

学习ASP.NET MVC框架揭秘笔记目录 第一章     ASP.NET+MVC 1.1传统的MVC模式 持续更新中,,,,

JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事.当然,在学校里考试之前当然要把所有内容学一遍和复习一遍.但是,到了社会里做事,很多时候都是边做边学.应聘如此,工作如此,很多的挑战都是如此.没办法,硬着头皮上吧. 3.5 线程的分组管理 在实际的开发过程当中,可能会有多个线程同时存在,这对批量处理有了需求.这就有点像用迅雷下载电视剧,假设你在同时

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

前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的文章,大多都是以罗列记忆点的形式书写的,没有谈论实现细节和逻辑原理.作为个人笔记无可厚非,但是并不利于他人学习.希望能通过这种比较“费劲”的讲解,帮助我自己.也帮助读者们更好地学习Java.掌握Java. 无论你跟我一样需要应聘,还是说在校学生学习Java基础,都对入门和进一步启发学习有所帮助.(关

SSH框架搭建 笔记 (含spring注解驱动)

分类: web 开发2014-04-27 12:33 354人阅读 评论(0) 收藏 举报 框架springinterface注解 好久没有搭建框架了,今天整理下以前的知识,整合下SSH,没想到手生了,一时半会各种异常出来,经过一番挣扎后,终于搞出来了雏形, 下面是我做整合框架的笔记,如果大家开发过程中又遇到的情况,可以参考下 首先是包的结构,(命名不算正规哈~,临时写的仓促了点) 框架是基于JAR包的基础上构建的,所以必须必备的jar包必须先下好, 如图: 没有的可以在本文源代码里下: 搭建框

SuperSocket框架学习笔记4-SuperWebSocket---使用SubCommandBase

首先下载所需要的 DLL http://download.csdn.net/detail/wai2dance123/7389285 或者参见第2章  到SuperSocket官网下载 http://www.cnblogs.com/xmcrew/p/3747354.html 1,新建一个 .NET4.0 控制台应用程序 命名为 DiyServers 添加以下引用 将默认的Program.cs改名为  DiyServers.cs 并添加以下命名空间 2,写自己的DSession和DServer继承自