如何在Elm的同一页面中多次加载带有标志的组件?

Nat*_*tim 2 elm

有没有办法使用 Elm 为页面构建组件,并在同一个 Elm 文件中编译两个组件,并使用相同的代码加载两次相同的组件?

你知道我该怎么做吗?

Nat*_*tim 5

elm-make 允许您选择要一起编译的多个文件。

elm-make Header.elm Footer.elm Button.elm --output=app.js
Run Code Online (Sandbox Code Playgroud)

标题.elm

port module Header exposing (..)

import Html


main =
    Html.div [] [ Html.text "Header" ]
Run Code Online (Sandbox Code Playgroud)

页脚.elm

port module Footer exposing (..)

import Html


main =
    Html.div [] [ Html.text "Footer" ]
Run Code Online (Sandbox Code Playgroud)

按钮.榆树

port module Button exposing (..)

import Html


main =
    Html.div [] [ Html.button [] [ Html.text "Button" ] ]
Run Code Online (Sandbox Code Playgroud)

索引.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Elm Demo</title>
  </head>

  <body>
    <div id="header"></div>
    <div id="button"></div>
    <div id="button2"></div>
    <div id="footer"></div>
  </body>
  <script src="app.js"></script>
  <script>
      let header = Elm.Header.embed(document.getElementById("header"));
      let footer = Elm.Footer.embed(document.getElementById("footer"));
      let button = Elm.Button.embed(document.getElementById("button"));
      let button2 = Elm.Button.embed(document.getElementById("button2"));
  </script>
</html>
Run Code Online (Sandbox Code Playgroud)