72 lines
2.7 KiB
Markdown
72 lines
2.7 KiB
Markdown
|
---
|
||
|
title: Web Application Development with Beego
|
||
|
date: 2014-11-28
|
||
|
---
|
||
|
|
||
|
Web Application Development with Beego
|
||
|
======================================
|
||
|
|
||
|
Beego is a fantastic web application framework from the Go China
|
||
|
community. It currently powers some of the biggest websites in China,
|
||
|
and thus the world.
|
||
|
|
||
|
Let's get started. For now I am going to assume you are running OSX or
|
||
|
Linux. Getting Beego set up on Windows with the sqlite driver is
|
||
|
nontrivial at best due to Windows being terrible.
|
||
|
|
||
|
### Installing Beego
|
||
|
|
||
|
The Beego developers have made a tool called bee for easier managing of
|
||
|
Beego projects. To install it, run:
|
||
|
|
||
|
```
|
||
|
go get github.com/beego/bee
|
||
|
go get github.com/astaxie/beego
|
||
|
```
|
||
|
|
||
|
The `bee` tool will be present in `$GOPATH/bin`. Please make sure this
|
||
|
folder is in your `$PATH` or things will not work.
|
||
|
|
||
|
### Creating a Project
|
||
|
|
||
|
Navigate to a directory in your `$GOPATH` and run the command `bee new
|
||
|
quickstart`:
|
||
|
|
||
|
![](https://d262ilb51hltx0.cloudfront.net/max/800/1*ATTbb_23WVmxgoFweXSXQg.png)
|
||
|
|
||
|
The `bee` tool created all the scaffolding we needed for our example
|
||
|
program. Change into that directory and run `bee run`. Your
|
||
|
application will be served on port 8080.
|
||
|
|
||
|
![](https://d262ilb51hltx0.cloudfront.net/max/800/1*DG8Tl71KXYdiddV1x6m0GQ.png)
|
||
|
|
||
|
Now let's take a look at the parts of Beego that are in use. Beego is a
|
||
|
typical MVC style framework so there are 3 basic places you may need to
|
||
|
edit code:
|
||
|
|
||
|
The Models are Beego's powerful database-backed models (we'll get into
|
||
|
those in a little bit), the Views are normal Go
|
||
|
[html/template](https://godoc.org/html/template)s, and
|
||
|
the Controllers are the Go code that controls the Views based on the Models.
|
||
|
|
||
|
![](https://d262ilb51hltx0.cloudfront.net/max/600/1*EZ1qIqeXNW_NfKuLbudogA.png)
|
||
|
|
||
|
New Beego projects use Beego's default HTTP router, which is similar to
|
||
|
Sinatra or Tornado. The default router is very simple. It will only
|
||
|
route `/` to the MainController that was generated for you:
|
||
|
|
||
|
![](https://d262ilb51hltx0.cloudfront.net/max/800/1*t_oEyk6kSa1Y940m2fnwmg.png)
|
||
|
|
||
|
The main file will shadow-include the router package which will seed the
|
||
|
Beego router with your paths and site content. The MainController will
|
||
|
embed beego.Controller so it acquires all instance methods that a Beego
|
||
|
controller needs. Beego's controllers offer many methods that could be
|
||
|
used based on different HTTP verbs, but this simple example only
|
||
|
overrides the GET verb to serve the site. The data that will be passed
|
||
|
to the template is a `map[string]interface{}` as c.Data. The last line
|
||
|
tells Beego what template to render for the page, in this case
|
||
|
"index.tpl". If you don't set the template it will default to
|
||
|
"controller/method\_name.tpl" where method\_name is the method that was
|
||
|
called on the controller. In this example it would be
|
||
|
"maincontroller/get.tpl"
|