2016-10-26 2 views
1

Я использую вязание для front-end и phoenix в качестве back-end. Каковы наилучшие методы создания шаблона, который будет унаследован всеми страницами? Он будет реализован в фениксе или вязах. Любые советы приветствуются.Лучшая практика настройки шаблонов в 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 может использоваться для рендеринга общего содержимого, а предоставленные ей функции могут обрабатывать пользовательский контент.

Смежные вопросы