在 Elm 或 Phoenix 中设置模板的最佳实践
Best practice for template setup in Elm or Phoenix
我在前端使用elm,在后端使用phoenix。
创建将被所有页面继承的模板的最佳做法是什么?它应该在凤凰还是榆树中实施。
非常感谢任何建议。
Elm 不使用 pages 的概念,也不使用 templates 的概念进行 HTML 渲染。相反,它使用函数。作为一种纯函数式编程语言,继承不适用于 Elm。
话虽如此,您可以使用 Elm 函数模拟继承-类似 的行为,例如...SiteMesh。 (注: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
函数采用一个模型和三个函数。这三个函数中的每一个都负责渲染视图的一部分(或page)。这意味着 template
函数可用于呈现通用内容,然后提供给它的函数可以处理自定义内容。
我在前端使用elm,在后端使用phoenix。 创建将被所有页面继承的模板的最佳做法是什么?它应该在凤凰还是榆树中实施。 非常感谢任何建议。
Elm 不使用 pages 的概念,也不使用 templates 的概念进行 HTML 渲染。相反,它使用函数。作为一种纯函数式编程语言,继承不适用于 Elm。
话虽如此,您可以使用 Elm 函数模拟继承-类似 的行为,例如...SiteMesh。 (注: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
函数采用一个模型和三个函数。这三个函数中的每一个都负责渲染视图的一部分(或page)。这意味着 template
函数可用于呈现通用内容,然后提供给它的函数可以处理自定义内容。