레이블이 revel인 게시물을 표시합니다. 모든 게시물 표시
레이블이 revel인 게시물을 표시합니다. 모든 게시물 표시

Go 언어용 Revel 웹 프레임워크 시작하기

Revel(http://revel.github.io/index.html) 은 Go 언어용 web framework 이다.
한마디로 go에서 웹서버를 쉽게 만들어주는 패키지(라이브러리)라고 보면 될것이다.

[개발 환경 만들기]
다음을 .bat 로 만들어 놓고 실행하자.

@rem ysoftman
@rem Revel 설치하기(윈도우를 기준으로 했지만, 리눅스도 GOPATH 설정는것 빼면 같음)
@rem golang, git, hg 가 이미 설치되어 있다고 가정

@rem 현재 경로를 GOPATH 로 설정
set GOPATH=%cd%

@rem go get 커맨드로 revel framework 설치
go get github.com/revel/revel

@rem go get 커맨드로 revel command line tool 설치
go get github.com/revel/cmd/revel


[Revel skeleton 만들기]
이제 현재 디렉토리 기준으로 .\bin\revel.exe 로 revel 프로젝트 생성,실행,빌드 등을 할 수 있다.
(GOPATH=%cd% 로 설정되어 있어야 함)

bin\revel.exe new ysoftman_web

와 같이 실행하면 .\src\ysoftman_web 이라는 기본 뼈대가 생성된것을 알 수 있다.

[Revel 실행하기]
다음과 같이 현재 기본 빼대 자체로 바로 웹서버를 띄울 수 있다.
(참고로 이렇게 하면 ysoftman_web.exe 파일이 생성된다.)

bin\revel.exe run ysoftman_web

이제 브러우저로 localhost:9000 로 접속해보면 "It works!" 라는 반가운 메시지를 볼 수 있다.


[Revel 빌드하기]
revel 프로그램을 배포 등의 이유로 빌드하기 위해선 build 명령을 다음과 같이 사용하자.
build [import path] [target path]

bin\revel.exe build ysoftman_web ./output

이제 output 디렉토리에서 run.bat(리눅스에선 run.sh) 로 실행할 수 있다.


[Revel 기본 구조]
src\ysoftman_web 에 생성된 구조에서 개발해야할 부분을 보면 다음과 같다.

app/controllers --> 컨트롤(액션) 처리 관련
app/view --> 뷰(화면에 보여지는 html) 처리 관련
app/routes --> 라우트(클라 요청에 대한 처리 연결) 처리 관련
app/tmp --> main.go (GENERATED CODE - DO NOT EDIT)

이밖에 웹서버 설정이 있다.
conf/app.conf --> 웹 서버가 실행될때 보는 설정 파일
conf/routes --> 클라 요청에 대한 연결 처리 정의 파일

전체적인 흐름을 보자면
1. 웹서버 실행
2. 사용자가 요청이 들어오면 routes 에서 정의된 액션으로 연결
  예)  GET / App.Index            # 루트로 get 요청이 오면 App.Index 함수(액션처리)로 처리
3. app/controllers/app.go 의 Index()함수가 수행되고 이곳에서 Render() 로 템플릿 파일(app/view/App/Index.html) 을 바탕으로 html 생성하여 응답한다. 기본적으로 액션처리하는 함수(Index()) 와 같은 이름의 템플릿(Index.html)을 사용한다.