在Elm或Phoenix中进行模板设置的最佳实践

时间:2016-10-26 09:16:28

标签: elm phoenix

我使用elm作为前端,使用phoenix作为后端。 创建模板的最佳实践是什么,将由所有页面继承?应该在凤凰或榆树上实施。 非常感谢任何建议。

1 个答案:

答案 0 :(得分:2)

Elm不使用 pages templates 的概念进行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函数可用于呈现常见内容,然后提供给它的函数可以处理自定义内容。