본문 바로가기

Programmer Jinyo/Scala & FP

Play 프레임워크 공부 노트


투명한 기부를 하고싶다면 이 링크로 와보세요! 🥰 (클릭!)

바이낸스(₿) 수수료 평생 20% 할인받는 링크로 가입하기! 🔥 (클릭!)

* 개인적인 공부를 위해 노트한 글입니다

* 이 글 속에서 필요한 정보를 찾으셔서 잘 활용하실 수 있다면 마음껏 읽어주세요 :)

 

Play 2.7 넘어서부터인지 모르겠지만 sbt 설치하고 콘솔창으로 sbt run 으로 실행하면 된다.

(그 전에는 activator run 명령어로 실행했던것 같다. 블로그 글들 찾아보는데 다 그렇게 나오네..)

기본 구조

 

conf/routes

 

기본적인 라우팅 정보가 들어가 있다.

 

만약에 get 방식에서 파라미터를 넘겨주려면 명시해야 한다.

ex)GET /hello controllers.HomeController.hello(naaaame: String) // naaaame이라는 파라미터 전송할 것.

 

 

controllers/~~~~~Controller.scala

 

MVC 패턴의 컨트롤러들을 이 폴더 안에 넣어놓는다.

 

def index = Action {

  Ok(views.html.index("~~~"))

}

 

Ok는 200 코드를 보내는거랑 똑같다. 스칼라는 특히 직관적인걸 좋아하는 것 같다.

보라색 부분은 템플릿으로 전달되는 내용 부분이다.

 

index는 Action 객체가 된다. routes에서 아마 index라는 함수를 실행해라 라고 pointing하고 있는 것이며 그 pointing의 끝에는 Action객체가 있어야 하는 것 같다.

 

Action () 이 원래 맞는 표기였겠지만 스칼라에선 여러줄 표기를 위해서는 {}을 사용할 수 있다.

 

views/~~.scala.html

 

이 친구들은 MVC의 뷰 들이다.

약간 특이하게 스칼라만의 템플릿들의 형식이 있다.

 

템플릿에서는 @를 써서 HTML태그가 아닌 스칼라 표현식을 작성할 수 있다.

 

보통 이제 템플릿의 header라던지 footer, 혹은 head, body마지막의 js 임포트 부분들까지 중복되는 부분들을 따로 빼놓고 다시 불러오곤 하는데 (ejs의 <% include %> 같은 것.) scala에선 좀 특이하게 한다.

 

content 내용 page에서 본인 내용을 파라미터로 담아서 main을 호출한다.

main은 이미 content를 제외한 header등등을 구현해 놓고 content의 부분만 비운 상태로 기다린다.

 

그 후 content를 가져와서 싹 넣은 후 보여주면서 full page를 보여주게 된다.