Revel에 도전하는 Tutorial
저번, 골랑의 웹프레임워크, 레벨의 개요를 이해했기 때문에 이번 도전 강좌.환경은 클라우드 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 gocode
2. GOPATH를 설정합니다.export GOPATH=~/workspace/gocode
3. 설정을 저장합니다.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.gopackage 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에 유용한 도우미가 준비되어 있습니다.set
와template
등.
Hot-reload
Revel은 파일의 변경 사항을 모니터링하고 다시 컴파일합니다.확인하기 위해서 It workds!
를 Hello Revel
로 바꿔서 보관하세요.브라우저를 업데이트하면 아래가 이렇게 될 거예요.
Revel에서 다음 파일을 모니터링하고 있습니다.
Install Go
Revel을 사용하려면 Go를 설치해야 합니다.
이번에는 클라우드 9를 사용하기 때문에 사랑하지 않습니다.
Set up your GOPATH
GOPATH가 설치되어 있지 않은 경우 를 만들어야 합니다.GOPATH는 코드의 맨 위 디렉토리입니다.또한 Cloud9은 기본적으로 ~/workspace입니다.
1. 디렉토리를 생성합니다.
~/workspace (master) $ mkdir gocode
2. GOPATH를 설정합니다.export GOPATH=~/workspace/gocode
3. 설정을 저장합니다.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.gopackage 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에 유용한 도우미가 준비되어 있습니다.set
와template
등.
Hot-reload
Revel은 파일의 변경 사항을 모니터링하고 다시 컴파일합니다.확인하기 위해서 It workds!
를 Hello Revel
로 바꿔서 보관하세요.브라우저를 업데이트하면 아래가 이렇게 될 거예요.
Revel에서 다음 파일을 모니터링하고 있습니다.
~/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) $
# The IP address on which to listen.
http.addr = 0.0.0.0
# The port on which to listen.
http.port = 8080
~/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
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에 유용한 도우미가 준비되어 있습니다.set
와template
등.Hot-reload
Revel은 파일의 변경 사항을 모니터링하고 다시 컴파일합니다.확인하기 위해서
It workds!
를 Hello Revel
로 바꿔서 보관하세요.브라우저를 업데이트하면 아래가 이렇게 될 거예요.Revel에서 다음 파일을 모니터링하고 있습니다.
이렇게 알기 쉬운 정보를 표시하다.
그럼 이제 컨트롤러에서 템플릿에 수치를 제출해 봅시다.
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.gofunc (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.gofunc (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>
이렇게 하면 잘못된 데이터를 수정할 수 있다.
이상은 교과서의 끝입니다.
수고하셨습니다.
Reference
이 문제에 관하여(Revel에 도전하는 Tutorial), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazusa-qooq/items/31db4dad2b44babecd05
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<form action="/App/Hello" method="GET">
<input type="text" name="myName" /><br/>
<input type="submit" value="Say hello!" />
</form>
func (c App) Hello(myName string) revel.Result {
return c.Render(myName)
}
{{set . "title" "Home"}}
{{template "header.html" .}}
<h1>Hello {{.myName}}</h1>
<a href="/">Back to form</a>
{{template "footer.html" .}}
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)
}
<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>
Reference
이 문제에 관하여(Revel에 도전하는 Tutorial), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazusa-qooq/items/31db4dad2b44babecd05텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)