zoukankan      html  css  js  c++  java
  • 一、Beego介绍与项目创建及启动

    一、beego 简介

            beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。

            官网地址如下: https://beego.me/

    二、beego 的架构

            beego 的整体设计架构如下所示:

           beego 是基于八大独立的模块构建的,是一个高度解耦的框架。当初设计 beego 的时候就是考虑功能模块化,用户即使不使用 beego 的 HTTP 逻辑,也依旧可以使用这些独立模块,例如:你可以使用 cache 模块来做你的缓存逻辑;使用日志模块来记录你的操作信息;使用 config 模块来解析你各种格式的文件。所以 beego 不仅可以用于 HTTP 类的应用开发,在你的 socket 游戏开发中也是很有用的模块,这也是 beego 为什么受欢迎的一个原因。大家如果玩过乐高的话,应该知道很多高级的东西都是一块一块的积木搭建出来的,而设计 beego 的时候,这些模块就是积木,高级机器人就是 beego。至于这些模块的功能以及如何使用会在后面的文档逐一介绍。

    三、beego 的执行逻辑

            既然 beego 是基于这些模块构建的,那么它的执行逻辑是怎么样的呢?beego 是一个典型的 MVC 架构,它的执行逻辑如下图所示:

     

    四、beego 项目结构

           一般的 beego 项目的目录如下所示:

    myproject
    ├── conf
       └── app.conf
    ├── controllers
       └── default.go
    ├── main.go
    ├── models
    ├── routers
       └── router.go
    ├── static
       ├── css
       ├── img
       └── js
    ├── tests
       └── default_test.go
    └── views
        └── index.tpl

           从上面的目录结构我们可以看出来 M(models 目录)、V(views 目录)和 C(controllers 目录)的结构, main.go 是入口文件。

    五、创建工程及运行项目

         1. 安装 beego

    go get github.com/astaxie/beego

         2. 创建项目目录

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

    go get github.com/beego/bee

          安装完之后,bee 可执行文件默认存放在 $GOPATH/bin 里面,为了方便使用 bee,将 bee 的可执行文件路径添加到环境变量中。也就是把 $GOPATH/bin 添加到您的环境变量中,完成之后我们在命令行中执行下面命令,可以看到 bee 的参数:

    F:Goprojectsrcgo_devGoProjectGoWeb>bee
    Bee is a Fast and Flexible tool for managing your Beego Web Application.
    
    USAGE
        bee command [arguments]
    
    AVAILABLE COMMANDS
    
        version     Prints the current Bee version
        migrate     Runs database migrations
        api         Creates a Beego API application
        bale        Transforms non-Go files to Go source files
        fix         Fixes your application by making it compatible with newer versio
    ns of Beego
        dlv         Start a debugging session using Delve
        dockerize   Generates a Dockerfile for your Beego application
        generate    Source code generator
        hprose      Creates an RPC application based on Hprose and Beego frameworks
        new         Creates a Beego application
        pack        Compresses a Beego application into a single file
        rs          Run customized scripts
        run         Run the application by starting a local development server
        server      serving static content over HTTP on port
    
    Use bee help [command] for more information about a command.
    
    ADDITIONAL HELP TOPICS
    
    
    Use bee help [topic] for more information about that topic.

         下来重点看几个命令:

    • new 命令

         new 命令是新建一个 Web 项目,我们在命令行下执行 bee new <项目名> 就可以创建一个新的项目。默认项目是创建在$GOPATH/src/下,如果进入到该目录下则可以将创建的项目随意放置位置。下来我们创建一个myproject 的项目:

    F:Goprojectsrcgo_devGoProjectGoWeb>bee new myproject
    ______
    | ___ 
    | |_/ /  ___   ___
    | ___  / _  / _ 
    | |_/ /|  __/|  __/
    \____/  \___| \___| v1.10.0
    2019/03/19 22:03:00 INFO     ▶ 0001 Creating application...
            create   F:Goprojectsrcgo_devGoProjectGoWebmyproject
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectconf
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectcontrollers
    
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectmodels
            create   F:Goprojectsrcgo_devGoProjectGoWebmyproject
    outers
            create   F:Goprojectsrcgo_devGoProjectGoWebmyproject	ests
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectstatic
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectstaticjs
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectstaticcss
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectstaticimg
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectviews
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectconfapp.con
    f
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectcontrollers
    default.go
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectviewsindex.
    tpl
            create   F:Goprojectsrcgo_devGoProjectGoWebmyproject
    outers
    out
    er.go
            create   F:Goprojectsrcgo_devGoProjectGoWebmyproject	estsdefaul
    t_test.go
            create   F:Goprojectsrcgo_devGoProjectGoWebmyprojectmain.go
    2019/03/19 22:03:01 SUCCESS  ▶ 0002 New application successfully created!
    • api 命令

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

    F:Goprojectsrcgo_devGoProjectGoWeb>bee api apiproject
    ______
    | ___ 
    | |_/ /  ___   ___
    | ___  / _  / _ 
    | |_/ /|  __/|  __/
    \____/  \___| \___| v1.10.0
    2019/03/19 22:25:43 INFO     ▶ 0001 Creating API...
            create   F:Goprojectsrcgo_devGoProjectGoWebapiproject
            create   F:Goprojectsrcgo_devGoProjectGoWebapiprojectconf
            create   F:Goprojectsrcgo_devGoProjectGoWebapiprojectcontrollers
    
            create   F:Goprojectsrcgo_devGoProjectGoWebapiproject	ests
            create   F:Goprojectsrcgo_devGoProjectGoWebapiprojectconfapp.co
    nf
            create   F:Goprojectsrcgo_devGoProjectGoWebapiprojectmodels
            create   F:Goprojectsrcgo_devGoProjectGoWebapiproject
    outers
            create   F:Goprojectsrcgo_devGoProjectGoWebapiprojectcontrollers
    object.go
            create   F:Goprojectsrcgo_devGoProjectGoWebapiprojectcontrollers
    user.go
            create   F:Goprojectsrcgo_devGoProjectGoWebapiproject	estsdefau
    lt_test.go
            create   F:Goprojectsrcgo_devGoProjectGoWebapiproject
    outers
    ou
    ter.go
            create   F:Goprojectsrcgo_devGoProjectGoWebapiprojectmodelsobje
    ct.go
            create   F:Goprojectsrcgo_devGoProjectGoWebapiprojectmodelsuser
    .go
            create   F:Goprojectsrcgo_devGoProjectGoWebapiprojectmain.go
    2019/03/19 22:25:43 SUCCESS  ▶ 0002 New API successfully created!

         可以看出两个项目在目录结构上的差别:

         从上面的目录我们可以看到和 Web 项目相比,少了 static 和 views 目录,多了一个 test 模块,用来做单元测试的。同时,该命令还支持一些自定义参数自动连接数据库创建相关 model 和 controller: 

         bee api [appname] [-tables=""] [-driver=mysql] [-conn="root:<password>@tcp(127.0.0.1:3306)/test"],如果 conn 参数为空则创建一个示例项目,否则将基于链接信息链接数据库创建项目。

    • run 命令

         我们在开发 Go 项目的时候最大的问题是经常需要自己手动去编译再运行,bee run 命令是监控 beego 的项目,通过 fsnotify 监控文件系统(但是注意该命令必须在 $GOPATH/src/appname 下执行),当文件发生变化时他会热加载编译文件。

         我们从命令行进入到项目目录下执行 bee run,会自动编译并执行该项目(编译完成会在项目根目录下生成一个 项目名.exe可执行文件):

    F:Goprojectsrcgo_devGoProjectGoWebmyproject>bee run
    ______
    | ___ 
    | |_/ /  ___   ___
    | ___  / _  / _ 
    | |_/ /|  __/|  __/
    \____/  \___| \___| v1.10.0
    2019/03/19 22:38:44 INFO     ▶ 0001 Using 'myproject' as 'appname'
    2019/03/19 22:38:44 INFO     ▶ 0002 Initializing watcher...
    go_dev/GoProject/GoWeb/myproject/controllers
    go_dev/GoProject/GoWeb/myproject/routers
    go_dev/GoProject/GoWeb/myproject
    2019/03/19 22:39:32 SUCCESS  ▶ 0003 Built Successfully!
    2019/03/19 22:39:32 INFO     ▶ 0004 Restarting 'myproject.exe'...
    2019/03/19 22:39:32 SUCCESS  ▶ 0005 './myproject.exe' is running...

         此时打开浏览器,输入 http://localhost:8080/ 会出现下面画面:

         bee的更多命令可以看 GO的官方文档:https://beego.me/docs/install/bee.md#api-%E5%91%BD%E4%BB%A4

     六、参考文献

    • https://beego.me/docs/intro/
  • 相关阅读:
    centos8.2安装nginx
    Centos8安装PostgreSQL
    PostgreSQL 安装时提示下载元数据失败
    MySQL8定时备份
    Centos8安装Docker
    Centos8安装中文字体
    Centos8源码安装libgdiplus
    MySQL拖拽排序
    MySQL8修改事务隔离级别
    MySQL启动问题
  • 原文地址:https://www.cnblogs.com/xuejiale/p/10562074.html
Copyright © 2011-2022 走看看