将Elm语言和Semantic UI连接起来

6

在 Elm 中使用现成的 jQuery 插件有多容易?我刚开始学习 Elm 语言,想知道是否可以在我的应用程序中使用 Semantic UI 的下拉菜单。如何处理这样的任务?例如,没有像 Semantic UI 这样的库,为移动设备创建适当的下拉菜单非常困难,从头编写所有代码似乎就像是重复造轮子。


我认为你需要的是端口 - Mirzhan Irkegulov
你能详细说明一下吗?我需要为每个下拉列表创建一个端口,并在update函数中对应部分状态变化时更新它们吗?这听起来像是大量的样板文件。 - Victor Marchuk
我也遇到了这个问题,因为我已经在semantic-ui中有一个网站。 - alesch
1
不涉及Semantic UI,但有一个可用的Bootstrap Dropdown。您还可以在Elm中使用大部分仅基于CSS的Bootstrap(非常多)。 - therealmarv
2个回答

8
这并不是个好主意。Elm 是纯函数式的,这意味着对于任何给定的状态,我们都可以生成 UI。而要以编程方式更改 UI,则必须更改状态。
使用 Elm 的整个原因是因为认为杂质难以理解,而纯净则更受欢迎。
jQuery 使得直接读取和修改 UI 而不更改应用程序状态成为可能。这是不纯的。
因此,Elm 和 jQuery 在根本上是相互矛盾的,如果试图让两者一起工作,很可能会陷入麻烦。
可能最简单的方法是找一个不需要 JS 的 CSS 库,它可以提供一组合理的组件供您使用(例如 http://purecss.io/),然后与 Elm 结合使用。

3
外部库是一个相当普遍的使用情况。因为它们不纯净而将大量外部库排除在外不是一个选项。你不能每天都重新发明轮子。JavaScript生态系统必须可用。 - schlicht
2
@schlicht,纯语言的整个哲学是“不纯不行”。话虽如此,外部可变状态可以被隔离并表示为信号,并将其更改建模为效果并作为任务应用。但是,这样做会失去许多好处。 - Mark Bolusmjak
1
我稍微有些不同意,我的看法是旨在将杂质降至最低,并仅在必要时与之接触。没有副作用的程序会变得相当无聊。从实际的角度来看,重新使用elm中可能需要的所有内容是不可能的。 - schlicht
1
@schlicht 在 Elm 中编写的每个函数都是纯函数。不存在更/少纯或“最小”纯度的问题。这不是 OCaml 或 Scala。 - Mark Bolusmjak
@VictorMarchuk 那么你的观点是“所有这些工作似乎很难做到”和“其他东西,我认为,似乎让它变得容易”?无论如何,我从未说过不要与任何JS进行交互。并非所有JS都是平等的,与本地JS API集成需要根据具体情况进行考虑。jQuery可能是最糟糕的情况,这也是我回应的情况。与React的Interop更有意义,因为它是围绕功能范例设计的。与Polymer的Interop更有意义,因为组件可以被视为不可变的,并且每个周期都会呈现:https://github.com/quephird/polymer-with-elm。 - Mark Bolusmjak
显示剩余3条评论

4

我不了解jQuery,但Elm有一个端口/Interop系统,专门用于使用现有的Javascript库和避免重新发明太多轮子。我没有使用过它,但它可能适合您的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接