beego框架

beego官网https://beego.me/,如何安装与配置,首先查看官网提示。

按照提示,在shell中下载安装beego
go get github.com/astaxie/beego
安装bee工具
go get -u github.com/beego/bee
结果报错

sszxrmc:~ sszxr$ go get -u github.com/beego/bee
# github.com/beego/bee
ld: warning: text-based stub file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd and library file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//Security.framework/Security.tbd and library file /System/Library/Frameworks//Security.framework/Security are out of sync. Falling back to library file for linking.
sszxrmc:~ sszxr$ 

最终只能直接下载

sszxrmc:~ sszxr$ git clone https://github.com/beego/bee.git
Cloning into 'bee'...
remote: Enumerating objects: 405, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (329/329), done.
remote: Total 4153 (delta 82), reused 329 (delta 64), pack-reused 3748
Receiving objects: 100% (4153/4153), 3.39 MiB | 246.00 KiB/s, done.
Resolving deltas: 100% (2073/2073), done.
sszxrmc:~ sszxr$ 

把下载的文件移动到go/src/github.com/beego下面
然后在go/src目录下用bee命令创建一个项目
bee new hello
项目名称为hello

sszxrmc:src sszxr$ bee new hello
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.10.0
2018/11/09 17:50:41 INFO     ▶ 0001 Creating application...
	create	 /Users/sszxr/go/src/hello/
	create	 /Users/sszxr/go/src/hello/conf/
	create	 /Users/sszxr/go/src/hello/controllers/
	create	 /Users/sszxr/go/src/hello/models/
	create	 /Users/sszxr/go/src/hello/routers/
	create	 /Users/sszxr/go/src/hello/tests/
	create	 /Users/sszxr/go/src/hello/static/
	create	 /Users/sszxr/go/src/hello/static/js/
	create	 /Users/sszxr/go/src/hello/static/css/
	create	 /Users/sszxr/go/src/hello/static/img/
	create	 /Users/sszxr/go/src/hello/views/
	create	 /Users/sszxr/go/src/hello/conf/app.conf
	create	 /Users/sszxr/go/src/hello/controllers/default.go
	create	 /Users/sszxr/go/src/hello/views/index.tpl
	create	 /Users/sszxr/go/src/hello/routers/router.go
	create	 /Users/sszxr/go/src/hello/tests/default_test.go
	create	 /Users/sszxr/go/src/hello/main.go
2018/11/09 17:50:41 SUCCESS  ▶ 0002 New application successfully created!
sszxrmc:src sszxr$ 

进入hello项目,执行命令bee run

sszxrmc:hello sszxr$ bee run
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.10.0
2018/11/09 17:59:42 INFO     ▶ 0001 Using 'hello' as 'appname'
2018/11/09 17:59:42 INFO     ▶ 0002 Initializing watcher...
hello/controllers
hello/routers
hello
2018/11/09 17:59:44 SUCCESS  ▶ 0003 Built Successfully!
2018/11/09 17:59:44 INFO     ▶ 0004 Restarting 'hello'...
2018/11/09 17:59:44 SUCCESS  ▶ 0005 './hello' is running...
2018/11/09 17:59:44.662 [I] [asm_amd64.s:1333]  http server Running on http://:8080




成功启动项目
接下来打开浏览器,输入http://localhost:8080/
效果如下
beego框架_第1张图片

此时,终端窗口会显示监听到了get请求

2018/11/09 18:01:37.460 [D] [server.go:2741]  |            ::1| 200 |   1.993092ms|   match| GET      /     r:/
2018/11/09 18:01:37.480 [D] [server.go:2741]  |            ::1| 200 |    136.556µs|   match| GET      /static/js/reload.min.js
2018/11/09 18:02:33.016 [D] [server.go:2741]  |            ::1| 200 |   2.857898ms|   match| GET      /     r:/

项目文件结构

sszxr:hello sszxr$ tree
.
├── conf
│   └── app.conf
├── controllers
│   └── default.go
├── main.go
├── models
├── routers
│   └── router.go
├── static
│   ├── css
│   ├── img
│   └── js
│       └── reload.min.js
├── tests
│   └── default_test.go
└── views
    └── index.tpl

10 directories, 7 files
sszxr:hello sszxr$ 

框架结构

首先来看看项目下的文件夹和文件

conf文件夹

里面有一个文件app.conf,内容如下

appname = hello
httpport = 8080
runmode = dev

也就是配置文件。包括项目名称,监听端口等信息,可以根据需要修改。后续开发过程中,可以在这里添加一些其他配置。

controllers文件夹

里面有一个文件default.go,这里放的就是主要的go程序代码,每个项目的主程序逻辑都放在这里。

package controllers

import (
	"github.com/astaxie/beego"
)

type MainController struct {
	beego.Controller
}

func (c *MainController) Get() {
	c.Data["Website"] = "beego.me"
	c.Data["Email"] = "[email protected]"
	c.TplName = "index.tpl"
}

这一段代码就是浏览器访问localhost:8080时候,后端响应的代码。也就是当浏览器访问localhost:8080的时候,后端会把index.tpl这个页面展示给前端,并写入两个数据,网址(Website)和邮件(Email)信息。这个index.tpl放在项目根目录的views文件夹下。其实就是个模板文件,也就是和html文件内容是一样的,就是前端浏览器看到的页面。

routers文件夹

里面只有一个文件router.go,代码如下

package routers

import (
	"goblog/controllers"
	"github.com/astaxie/beego"
)

func init() {
    beego.Router("/", &controllers.MainController{})
}

这里是路由控制,就是访问哪个路径,或者说访问哪个URL,会触发哪个函数,执行哪些主程序逻辑。

static文件夹

里面有css、img、js三个文件夹,这里是放置静态文件的,包括css文件(模板渲染),图片,js文件。

tests文件夹

里面有一个test.go文件,这里是放置测试代码的。

views文件夹

这里是放置模板文件的,里面有一个文件index.tpl,内容如下



<html>
<head>
  <title>Beegotitle>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="shortcut icon" href="data:image/png;base64,g==" type="image/x-icon" />

  <style type="text/css">
    *,body {
      margin: 0px;
      padding: 0px;
    }

    body {
      margin: 0px;
      font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
      font-size: 14px;
      line-height: 20px;
      background-color: #fff;
    }

    header,
    footer {
      width: 960px;
      margin-left: auto;
      margin-right: auto;
    }

    .logo {
      background-image: url('data:image/png;base64,iVBORuQmCC');
      background-repeat: no-repeat;
      -webkit-background-size: 100px 100px;
      background-size: 100px 100px;
      background-position: center center;
      text-align: center;
      font-size: 42px;
      padding: 250px 0 70px;
      font-weight: normal;
      text-shadow: 0px 1px 2px #ddd;
    }

    header {
      padding: 100px 0;
    }

    footer {
      line-height: 1.8;
      text-align: center;
      padding: 50px 0;
      color: #999;
    }

    .description {
      text-align: center;
      font-size: 16px;
    }

    a {
      color: #444;
      text-decoration: none;
    }

    .backdrop {
      position: absolute;
      width: 100%;
      height: 100%;
      box-shadow: inset 0px 0px 100px #ddd;
      z-index: -1;
      top: 0px;
      left: 0px;
    }
  style>
head>

<body>
  <header>
    <h1 class="logo">Welcome to Beegoh1>
    <div class="description">
      Beego is a simple & powerful Go web framework which is inspired by tornado and sinatra.
    div>
  header>
  <footer>
    <div class="author">
      Official website:
      <a href="http://{{.Website}}">{{.Website}}a> /
      Contact me:
      <a class="email" href="mailto:{{.Email}}">{{.Email}}a>
    div>
  footer>
  <div class="backdrop">div>

  <script src="/static/js/reload.min.js">script>
body>
html>

这就是刚才用浏览器打开localhost:8080所看到的页面,内容完全是html模板内容,只不过文件后缀是.tpl,和放.html文件效果完全一样,没有区别。

程序入口main文件

main.go文件,里面只有一点点内容

package main

import (
	"github.com/astaxie/beego"
	_ "goblog/routers"
)

func main() {
	beego.Run()
}

运行main文件,就启动了项目,运行后,会执行函数beego.Run(),这个函数会从配置文件里查找网址,端口等信息,启动监听。

你可能感兴趣的:(beego,go语言,后端)