Revel에 도전하는 Tutorial

14121 단어 GoRevel
http://revel.github.io/tutorial/index.html
저번, 골랑의 웹프레임워크, 레벨의 개요를 이해했기 때문에 이번 도전 강좌.환경은 클라우드 9입니다.프로젝트 유형: 맞춤형 Go는 사용할 수 있지만 처음에 데모 프로젝트도 문제가 없습니다.

Introduction


Getting Started를 통해 아주 간단한 Revel을 배우세요.
• Getting started: Revel 가져오기 및 시작
• Creating a new Revel app: 계획 제작
・The request flow: 다른 방법으로 요청 처리
· Implementing the Hello World app: Hallo World 응용 프로그램 제작

Getting started


Install Go


Revel을 사용하려면 Go를 설치해야 합니다.
이번에는 클라우드 9를 사용하기 때문에 사랑하지 않습니다.

Set up your GOPATH


GOPATH가 설치되어 있지 않은 경우 를 만들어야 합니다.GOPATH는 코드의 맨 위 디렉토리입니다.또한 Cloud9은 기본적으로 ~/workspace입니다.
1. 디렉토리를 생성합니다.~/workspace (master) $ mkdir gocode2. GOPATH를 설정합니다.export GOPATH=~/workspace/gocode3. 설정을 저장합니다.echo export GOPATH=$GOPATH >> ~/.bashrc

Install git and hg


라이브러리에 있는 "go get"을 사용하려면 Giit 및 Mercurial이 필요합니다.클라우드 9는 이미 포함되어 있기 때문에 사랑하지 않습니다.

Get the Revel framework


Revel을 받으려면 다음 명령을 실행하십시오.go get github.com/revel/revel이 명령은 창고를 $GOPATH/src/github.com/revel/revel/에 복제하고 의존 관계를 더욱 해결한다.또한 성공하면 명령줄에 아무것도 출력되지 않습니다.

Get and Build the Revel command line tool


Revel 응용 프로그램을 구축하고 실행하려면 명령줄 도구가 필요합니다.다음 명령을 사용하여 얻을 수 있습니다.여기도 명령줄에 아무것도 출력하지 않습니다.go get github.com/revel/cmd/revel $GOPATH/bin 경로를 통해 revel 명령이 설치되었습니다.
~/workspace/gocode (master) $ export PATH="$PATH:$GOPATH/bin"
~/workspace/gocode (master) $ revel
~
~ revel! http://revel.github.io
~
usage: revel command [arguments]

The commands are:

    new         create a skeleton Revel application
    run         run a Revel application
    build       build a Revel application (e.g. for deployment)
    package     package a Revel application (e.g. for deployment)
    clean       clean a Revel application's temp files
    test        run all tests from the command-line

Use "revel help [command]" for more information.
~/workspace/gocode (master) $ 

Creating a new Revel application


http://revel.github.io/tutorial/createapp.html
revel 명령 revel new myapp 을 실행하고 프로그램을 만듭니다.
~/workspace/gocode (master) $ revel new myapp
~
~ revel! http://revel.github.io
~
Your application is ready:
   /home/ubuntu/workspace/gocode/src/myapp

You can run it with:
   revel run myapp
~/workspace/gocode (master) $ 
Cloud9의 경우 주소와 포트를 변경해야 합니다.
src/myapp/conf/app.conf
# The IP address on which to listen.
http.addr = 0.0.0.0

# The port on which to listen.
http.port = 8080
revel run myapp에 생성된 응용 프로그램을 시작합니다.
~/workspace/gocode (master) $ revel run myapp
~
~ revel! http://revel.github.io
~
INFO  2015/04/23 01:23:12 revel.go:329: Loaded module static
INFO  2015/04/23 01:23:12 revel.go:329: Loaded module testrunner
INFO  2015/04/23 01:23:12 revel.go:206: Initialized Revel v0.12.0 (2015-03-25) for >= go1.3
INFO  2015/04/23 01:23:12 run.go:57: Running myapp (myapp) in dev mode
INFO  2015/04/23 01:23:12 harness.go:165: Listening on 0.0.0.0:8080

브라우저를 통해 액세스할 수 있습니다.

다 했네.

The Request Flow


http://revel.github.io/tutorial/requestflow.html
이 항목에서 Revel이 요청을 어떻게 처리하고 환영 페이지를 표시하는지 살펴봅니다.

Routes


우선 검사conf/routes.
GET     /     App.Index
이는 경로에 액세스할 때 App 디렉터의 Index 방법을 실행한다는 의미입니다.

Actions


그럼 App 디렉터를 살펴봅시다.
src/myapp/app/controllers/app.go
package controllers

import "github.com/revel/revel"

type App struct {
    *revel.Controller
}

func (c App) Index() revel.Result {
    return c.Render()
}

모든 컨트롤러는 *revel.Controller 끼워 넣은 struct입니다.revel.Result를 반환하는 내보내기 방법은 작업으로 사용됩니다.내보내기 여부는 메서드 이름의 첫 글자가 대문자인지 여부에 따라 달라집니다.
Revel 디렉터는 일반적인 Result를 반환하는 여러 가지 방법을 제공합니다.이 예에서는 템플릿을 사용하는 200OK Result를 반환합니다.또한 다음 설명c.Render()은 해당 템플릿을 자동으로 찾습니다.

Templates


템플릿은 app/views에 있습니다.상기 예에서 템플릿을 명시하지 않았을 때app/views/<contorller>/<action>.html를 대상으로 한다.이 경우app/views/App/Index.html.
src/myapp/app/views/App/Index.html
{{set . "title" "Home"}}
{{template "header.html" .}}

<header class="hero-unit" style="background-color:#A9F16C">
  <div class="container">
    <div class="row">
      <div class="hero-text">
        <h1>It works!</h1>
        <p></p>
      </div>
    </div>
  </div>
</header>

<div class="container">
  <div class="row">
    <div class="span6">
      {{template "flash.html" .}}
    </div>
  </div>
</div>

{{template "footer.html" .}}
Go 템플릿과 Revel에 유용한 도우미가 준비되어 있습니다.settemplate 등.

Hot-reload


Revel은 파일의 변경 사항을 모니터링하고 다시 컴파일합니다.확인하기 위해서 It workds!Hello Revel로 바꿔서 보관하세요.브라우저를 업데이트하면 아래가 이렇게 될 거예요.

Revel에서 다음 파일을 모니터링하고 있습니다.
  • app/이하 고 파일
  • app/views/이하 템플릿
  • conf/routes
  • 컴파일 오류 시 화면 표시를 확인합니다.app.go의 c.Render()를 c.Renderx()로 설정하고 화면을 업데이트합니다.

    이렇게 알기 쉬운 정보를 표시하다.
    그럼 이제 컨트롤러에서 템플릿에 수치를 제출해 봅시다.
    func (c App) Index() revel.Result {
      greeting := "Aloha World"
      return c.Render(greeting)
    }
    
    템플릿에서 이 값을 사용합니다.<h1>{{.greeting}}</h1>화면을 업데이트하여 확인합니다.

    다 했네.

    The 'Hello World' app


    http://revel.github.io/tutorial/firstapp.html
    그럼 지금부터 헬로월드 앱을 만들어보자.
    플래시 템플릿 아래에 다음 창을 추가합니다.
    <form action="/App/Hello" method="GET">
        <input type="text" name="myName" /><br/>
        <input type="submit" value="Say hello!" />
    </form>
    

    제출해 보세요.오류가 발생했습니다.

    그럼 동작과 보기를 준비해 봅시다.
    app.go
    func (c App) Hello(myName string) revel.Result {
        return c.Render(myName)
    }
    
    app/views/App/Hello.html
    {{set . "title" "Home"}}
    {{template "header.html" .}}
    
    <h1>Hello {{.myName}}</h1>
    <a href="/">Back to form</a>
    
    {{template "footer.html" .}}
    
    그럼 다시 제출할게요.입력란에'Revel'이라고 쓰여 있다.

    본문에는 전혀 언급되지 않았지만, 형식 전송 데이터와 동작 파라미터는 myname을 연결합니다.
    그럼 발리데이를 조금 늘려주세요.myname은 세 글자 이상의 제한이 있어야 합니다.
    app.go
    func (c App) Hello(myName string) revel.Result {
        c.Validation.Required(myName).Message("Your name is required!")
        c.Validation.MinSize(myName, 3).Message("Your name is not long enough!")
    
        if c.Validation.HasErrors() {
            c.Validation.Keep()
            c.FlashParams()
            return c.Redirect(App.Index)
        }
    
        return c.Render(myName)
    }
    
    이 검증 오류는 플래시 템플릿으로 표시됩니다.
    현재 상태라면 잘못된 값을 입력하면 폼이 지워질 것 같습니다.상황에 따라 남는 게 가장 좋은 경우도 많다.그것을 위해서 나는 아래의 일을 할 것이다.
    index.html
    <form action="/App/Hello" method="GET">
        {{with $field := field "myName" .}}
            <input type="text" name="{{$field.Name}}" value="{{$field.Flash}}"/><br/>
        {{end}}
        <input type="submit" value="Say hello!" />
    </form>
    
    이렇게 하면 잘못된 데이터를 수정할 수 있다.

    이상은 교과서의 끝입니다.
    수고하셨습니다.

    좋은 웹페이지 즐겨찾기