文章目录

  • Beego框架快速入门
      • 1.beego框架了解
      • 2.MVC架构
      • 3.环境搭建
      • 4.beego的项目结构分析
      • 5.Beego快速体验
      • 6.Beego运行流程分析
      • 7.Post案例实现
        • 7.1前端修改
        • 7.2后台代码修改
      • 8.Beego中路由的快速体验
        • 8.1路由的简单设置
        • 8.2高级路由设置
    • 小结

Beego框架快速入门

1.beego框架了解

Beego作者:谢孟军

Beego框架是go语言开发的web框架。

那什么是框架呢?就是别人写好的代码,我们可以直接使用!这个代码是专门针对某一个开发方向定制的,例如:我们要做一个网站,利用 beego 框架就能非常快的完成网站的开发,如果没有框架,每一个细节都需要我们处理,开发速度会大大降低。

go语言的web框架:beego,gin,echo等等,那为什么我们选择beego呢?

第一,beego是中国人开发的,开发文档比较详细,beego官网网址: https://beego.me/ 。
第二,现在公司里面用beego的也比较多,比如今日头条,百度云盘,腾讯,阿里等。

2.MVC架构

Beego是MVC架构。MVC 是一种应用非常广泛的体系架构,几乎所有的编程语言都会使用到,而且所有的程序员在工作中都会遇到!用 MVC 的方式开发程序,可以让程序的结构更加合理和清晰。 我们画图说明

beego具体是如何内嵌MVC呢?我们搭起环境通过代码分析。

3.环境搭建

这里默认大家已经搭建好了go语言的开发环境。

  • 需要安装Beego源码和Bee开发工具//sudo apt-get install

    $ go get -u -v github.com/astaxie/beego
    $ go get -u -v github.com/beego/bee
    

    beego源码大家都了解,就是框架的源码。

    Bee开发工具带有很多Bee命令。比如bee new创建项目,bee run运行项目等。

    用bee运行项目,项目自带热更新(是现在后台程序常用的一种技术,即在服务器运行期间,可以不停服替换静态资源。替换go文件时会自动重新编译。)

    安装完之后,bee可执行文件默认存放在$GOPATH/bin里面,所以需要把$GOPATH/bin添加到环境变量中才可以进行下一步

    $ cd ~
    $ vim .bashrc
    //在最后一行插入
    export PATH="$GOPATH/bin:$PATH"
    //然后保存退出
    $ source .bashrc
    

    安装好之后,运行bee new preojectName来创建一个项目,注意:通过bee创建的项目代码都是在$GOPATH/src目录下面的

    生成的项目目录结构如下:

    quickstart
    |-- conf
    |   `-- app.conf
    |-- controllers
    |   `-- default.go
    |-- main.go
    |-- models
    |-- routers
    |   `-- router.go
    |-- static
    |   |-- css
    |   |-- img
    |   `-- js
    |-- tests
    |   `-- default_test.go
    |-- views`-- index.tpl

    进入项目目录 执行bee run命令,在浏览器输入网址:127.0.0.1:8080,显示如下:

4.beego的项目结构分析

quickstart
|-- conf
|   `-- app.conf
|-- controllers
|   `-- default.go
|-- main.go
|-- models
|-- routers
|   `-- router.go
|-- static
|   |-- css
|   |-- img
|   `-- js
|-- tests
|   `-- default_test.go
|-- views`-- index.tpl

conf文件夹:放的是项目有关的配置文件

controllers:存放主要的业务代码

main.go:项目的入口文件

models:存放的是数据库有关内容

routers:存放路由文件,路由作用是根据不同的请求指定不同的控制器

static:存放静态资源,包括图片,html页面,css样式,js文件等

tests:测试文件

views:存放视图有关内容

后面我们重点需要操作的是MVC文件夹,routers文件夹。

5.Beego快速体验

前面我们简单了解了 beego初始化的内容,那么就来个beego的快速体验吧!

根据上图所示的步骤,对自己创建的项目进行三步修改,然后在浏览器是否能看到修改之后的效果。

如果把你们前面做的静态网页放到views文件夹下呢?一个静态网站是不是就出现啦!有没有感受到beego开发网站的快捷!

代码分析

c.Data["Email"] = "astaxie@gmail.com"是给视图传递数据,在视图界面里面需要用{{ }}加上.才能获取到,比如这行代码的意思就是,给视图传递,**Key为Email,value为astaxie@gmail.com **的数据。在视图中要通过{{.Email}}就能获取到value值。

c.TplName = "index.tpl"的作用是指定视图。这里面需要注意的是,默认指定的界面是tpl结尾,但是打开这个文件分析,发现还是一个html界面。所以我们也可以用html文件当视图文件。

通过我们对Beego的快速体验能够得出如下结论:

控制器(Controller)的作用

1.能够给视图传递数据

2.能够指定视图

视图(View)的作用

1.view本质就是个html。所以能在浏览器显示

2.能够接收控制器传递过来的数据

6.Beego运行流程分析

  • 浏览器发出请求

  • 路由拿到请求,并给相应的请求指定相应的控制器

  • 找到指定的控制器之后,控制器看是否需要查询数据库

  • 如果需要查询数据库就找model取数据

  • 如果不需要数据库,直接找view要视图

  • 控制器拿到视图页面之后,把页面返回给浏览器

    根据文字流程分析代码流程

  • 从项目的入口main.go开始

  • 找到router.go文件的Init函数

  • 找到路由指定的控制器文件default.go的Get方法

  • 然后找到指定视图的语法,整个项目就串起来啦。

7.Post案例实现

刚才我们分析了beego项目的整个运行流程,最终是如何调到Get方法的呢?beego通过内部语法给不同的http请求指定了不同的方法,因为我们是从浏览器地址栏发送的请求,属于get请求,所以调用的是Get方法。为了检验对不对,我们可以实现一个post请求,看看效果。

7.1前端修改

前端代码如下:

修改我们刚才创建的新的视图,为了能够发送post请求,我们在视图中添加一个能发送post请求的控件form

<form method="post" action="/index"><input type="submit">
</form>

然后设置一个能接收后台传递过来的数据的标签

<h1>hello {{.data}}</h1>

全部代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form method="post" action="/index"><input type="submit">
</form>
<h1>hello {{.data}}</h1></body>
</html>

7.2后台代码修改

后台代码

先设置我们Get请求要传递的数据和要显示的视图页面

func (c *MainController) Get() {c.Data["data"] = "world"c.TplName = "test.html"  //渲染
}

再设置我们post请求要传递的数据和要显示的视图页面

func (c *MainController) Post() {c.Data["data"] = "hello world"c.TplName = "test.html"  //渲染
}

操作

先在浏览器输入网址,然后点击页面上的按钮,看一下页面的变化,有没有出现hello world

8.Beego中路由的快速体验

8.1路由的简单设置

路由的作用:根据不同的请求指定不同的控制器

路由函数:beego.Router("/path",&controller.MainController{})

函数参数:

先分析一下Url地址由哪几部分组成? 同一资源定位符

http://192.168.110.71:8080/index

http://地址:端口/资源路径

第一个参数:资源路径,也就是/后面的内容

第二个参数:需要指定的控制器指针

了解上面的内容之后我们来看几个简单的例子:

beego.Router("/", &controllers.MainController{})
beego.Router("/index", &controllers.IndexController{})
beego.Router("/login", &controllers.LoginController{})

8.2高级路由设置

一般在开发过程中,我们基本不使用beego提供的默认请求访问方法,都是自定义相应的方法。那我们来看一下如何来自定义请求方法。

自定义请求方法需要用到Router的第三个参数。这个参数是用来给不同的请求指定不同的方法。具体有如下几种情况。

  • 一个请求访问一个方法(也是最常用的),请求和方法之间用 : 隔开,不同的请求用 ; 隔开:

    beego.Router("/simple",&SimpleController{},"get:GetFunc;post:PostFunc")
    
  • 可以多个请求,访问一个方法 ,请求之间用,隔开,请求与方法之间用:隔开:

    beego.Router("/api",&RestController{},"get,post:ApiFunc")
    
  • 所有的请求访问同一个方法,用*号代表所有的请求,和方法之间用:隔开:

    beego.Router("/api/list",&RestController{},"*:ListFood")
    
  • 如果同时存在 * 和对应的 HTTP请求,那么优先执行 HTTP请求所对应的方法,例如同时注册了如下所示的路由:

    beego.Router("/simple",&SimpleController{},"*:AllFunc;post:PostFunc")
    

    那么当遇到Post请求的时候,执行PostFunc而不是AllFunc。

    如果用了自定义方法之后,默认请求将不能访问。

小结

1.了解MVC结构

2.了解beego初始化之后各个模块的作用

3.了解beego项目的运行流程

4.能够对路由进行简单的设置

Go语言Web框架:Beego框架快速入门相关推荐

  1. 【Go语言Web开发框架】Iris快速入门

    Iris MVC 基本概念 Model(模型):应用程序的主体部分,主要包括业务逻辑,数据操作和数据模型 View(视图):用户与之交互的界面 Controller(控制器):接收来自界面的请求并交给 ...

  2. web框架:Iris快速入门

    web框架:Iris快速入门 1 介绍及安装 介绍 Iris是一款用Go开发的web应用框架,被称为速度最快的Go后端开发框架. 官网地址:https://www.iris-go.com/ 中文教程地 ...

  3. CTK框架——CTK Widgets快速入门

    CTK框架--CTK Widgets快速入门 天山老妖S关注0人评论27888人阅读2018-05-25 18:40:52 CTK框架--CTK Widgets快速入门 一.CTK Widgets模块 ...

  4. python与c语言在语法上的区别-Python与C语言基础对比(Python快速入门)

    代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...

  5. python和c语言的对比_Python与C语言基础对比(Python快速入门)

    原博文 2019-07-05 09:23 − > 代码较长,建议使用电脑阅读本文. # 10分钟入门Python `本文中使用的是Python3` 如果你曾经学过C语言,阅读此文,相信你能迅速发 ...

  6. 高性能RPC框架—----------------------Dubbo一站式快速入门

    https://blog.csdn.net/tangyang8941/article/details/88025412 一.Web应用架构的演变 ​    随着互联网的发展,网站应用的规模不断扩大,W ...

  7. 爬虫框架:Scrapy 快速入门

    文章目录 一.Scrapy简介 1.1 示例代码 1.2 示例代码的运行流程 二.安装Scrapy 2.1 Ubuntu下安装 2.2 Windows下安装 2.3 Mac OS下安装 三.Scrap ...

  8. el-admin框架简单解析-快速入门(前端部分)

    目录 el-admin 简单了解 使用框架的四大步 el-admin前端部分解析 前端Vue目录结构 Layout 布局 mixins 混入模式 router 路由 store 状态管理 utils ...

  9. Day14-HTTP协议 web开发概述 servlet快速入门

    HTTP:HyperText Transfer Protocol 超文本传输协议 用于定义web浏览器和web服务器之间交换数据的过程 特点: 基于请求/响应模型的协议.请求和相应必须成对出现,现有请 ...

  10. c语言stl用法,C STL快速入门!学习使我快乐

    C++ STL中最基本以及最常用的类或容器无非就是以下几个: ▶ string ▶ vector ▶ set ▶ list ▶ map 下面就依次介绍它们,并给出一些最常见的最实用的使用方法,做到快速 ...

最新文章

  1. [html] 如何垂直居中<img>?
  2. Android内存泄漏的各种原因详解
  3. keyshot9怎么导入材质_你知道硬质合金刀片是怎么来的吗?讲解直观!
  4. 震惊,CSDN居然可以打出爱心?
  5. Nexus6P 设置Debug模式
  6. 缩进一个字符_韩语毕业论文排版之 学会悬挂缩进,不再天天敲空格!
  7. mssql 获取2个时间之间相距的时分秒(取余数得秒)
  8. 渗透测试面试题汇总(全)
  9. Win10,Office2013出现“您的组织策略阻止我们为您完成此操作”怎么解决?
  10. 探索性数据分析(四)——特征工程(对数转换、标准化/归一化、离散化、标签编码、独热编码、Dummy变量)
  11. 阿里云因发现Log4j2 核弹级漏洞,未及时上报,被工信部处罚。。
  12. Tracup小提示:工作总是摸鱼、走神,您可能得了“成人多动症”?
  13. 阿里云服务(三)—对象存储OSS和块存储
  14. 重读数据结构之爬楼梯问题(动态规划)
  15. 软件测试学习笔记与思考(2)---软件测试策略
  16. 如何将EndNote中的参考文献插入到word中
  17. 360手机:360N5S Twrp、Root、Magisk教程
  18. BSCI验厂考勤资料工资作假不一致解决方案
  19. 力扣解题思路:488. 祖玛游戏
  20. Java飞机大战游戏(需求分析+代码+图片)

热门文章

  1. 调和分析笔记3:卡尔德隆-济格蒙德分解
  2. db107s-ASEMI整流桥堆怎么测量好坏,万用表测量DB107S四脚
  3. 计算机专业的个人简历英语,计算机专业优秀个人英文简历范文【三篇】
  4. 手把手教你用Python搭建一个AI智能问答系统!
  5. 视觉SLAM十四讲学习笔记——ch11回环检测
  6. 基于C+sqlite3+GTK的体育馆管理系统项目开发
  7. js怎么添加html空格,javascript-在JSX中添加空格的最佳做法
  8. 编码器NDI低延时无线WIFI室外直播方案(NDI传输+VMIX软导播)
  9. CATIA V5R20电气线束设计从入门到精通视频教程
  10. 正阳-本站汇总(长期更新)