我使用elm作为前端,使用phoenix作为后端。 创建模板的最佳实践是什么,将由所有页面继承?应该在凤凰或榆树上实施。 非常感谢任何建议。
答案 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
函数可用于呈现常见内容,然后提供给它的函数可以处理自定义内容。