2016-10-26 3 views
1

프론트 엔드에는 elm을, 백엔드에는 phoenix를 사용하고 있습니다. 모든 페이지에서 상속 할 템플릿을 만드는 것이 가장 좋은 방법은 무엇입니까? 피닉스 또는 느릅 나무에서 구현해야합니까? 모든 조언을 크게 주시면 감사하겠습니다.Elm 또는 Phoenix의 템플릿 설정을위한 모범 사례

답변

2

Elm은 HTML 렌더링을 위해 페이지도 아니고 템플릿의 개념을 사용하지 않습니다. 대신 함수를 사용합니다. 순수한 함수형 프로그래밍 언어이기 때문에, Elm에는 상속이 적용되지 않습니다.

그런 말로하면 상속을 시뮬레이트 할 수 있습니다. 과 같은 행동을하면 ... SiteMesh, Elm 기능이 있습니다. (참고 : SiteMesh는 데코레이터 디자인 패턴을 가장 두드러지게 사용하므로 실제 상속이 아닙니다. 여기에 예를 들어 (내가 좀 여기를 해결 해보려고 하는것 해요)입니다 : 위의 예에서

template : Model -> (Model -> Html Msg) -> (Model -> Html Msg) -> (Model -> Html Msg) -> Html Msg 
template model header body footer = 
    body [] 
     [ div [ class 'header' ] (header model) 
     , div [ class 'body' ] (body model) 
     , div [ class 'footer' ] (footer model) 
    ] 

view : Model -> Html Msg 
view model = 
    let 
     header model = p [] [ text "This is the header" ] 
     body model = p [] [ text "This is the body" ] 
     footer model = p [] [ text "This is the footer" ] 
    in 
     template model header body footer 

template 기능은 모델과 세 가지 기능을합니다. 세 가지 기능은 각각 뷰의 일부 (또는 페이지) 렌더링을 담당합니다. 즉, 공통 콘텐츠를 렌더링하는 데 template 함수를 사용하면 해당 함수가 사용자 지정 콘텐츠를 처리 할 수 ​​있습니다.