Elm:你将如何构建和设计你的UI?
在过去的几天里,我一直在学习榆树,这是一次令人耳目一新的经历。太多了,我不想再回到JS土地,:-( 我的问题是,我仍然没有找到使用elm生成web应用程序的方法,我希望得到一些指导和建议: 非常适合组织应用程序的结构。Elm:你将如何构建和设计你的UI?,elm,Elm,在过去的几天里,我一直在学习榆树,这是一次令人耳目一新的经历。太多了,我不想再回到JS土地,:-( 我的问题是,我仍然没有找到使用elm生成web应用程序的方法,我希望得到一些指导和建议: 非常适合组织应用程序的结构。 与你一起可以处理与你交谈的问题 但是我如何构建和设计UI? 让我们举一个具体的例子: 它被实现为一个div列表,以及一些处理下拉和多选的JS 到目前为止,我发现的备选方案有: 包括Semantic的CSS和JS(它需要JQuery)并用于钩住小部件的JS事件 只包含语义的CSS,
与你一起可以处理与你交谈的问题 但是我如何构建和设计UI?
让我们举一个具体的例子: 它被实现为一个div列表,以及一些处理下拉和多选的JS 到目前为止,我发现的备选方案有:
- 两份汉堡包菜单,屏幕两侧各一份
- 有样式的选择
- 公开三角形,隐藏/显示更多内容
- 一种类似旋转木马的图像显示,在底部有上一个/下一个和点
PS:我也在elm的邮件列表中发布了这个问题。首先,作为TabbedPages容器的作者,我想为它的复杂性道歉。这个组件实际上是一个实验,看看如何使用elm和elm架构以及内联样式。简言之,该组件的思想是允许对于tabs+swipeable pages组件,其中选项卡和页面的内容都是未知的,并且整个内容都是使用内联样式设计的。这可能是制作组件的最困难路线,尽管它有其优点 至于实现小部件,可以将Elm看作是编写Html的一种方法(就像超级高级的Jade)。这意味着您可以编写Html,为每个div提供一些类,并用CSS(或您选择的任何预处理)对这些类进行样式化。这意味着,不,您的小部件不需要像tabbedpage那样多的工作 最好的做法可能是在Elm中包含CSS,并可能重做JS部分。这将为您提供Elm提供的大量保证,而无需为开发组件付出太多成本 至于野生成分,不幸的是,由于Elm还年轻,目前没有太多。这在未来可能会改变,但目前情况并非如此 最后,对于汉堡包菜单,Elm中有两个提供svg图标的很棒的包 在这两个图标之间,有不到1000个图标可供选择(我想,我还没有算),它们只是函数,因此非常易于使用。它们生成
Svg
,这只是Html
类型的另一个名称,因此您可以互换使用这两个图标
简言之,目前最好的方法是用Elm编写html和逻辑,用CSS(或Sass/Less/Stylus/等等)编写样式。您的大部分逻辑只包括切换放在div中的类,比如jQuery
为此,我建议遵循Elm体系结构:
init : Options -> Model
update : Action -> Model -> Model
-- or update : Action -> Model -> (Model, Effects Action)
-- if you need effects like http
view : Address Action -> Model -> Html
至于内联样式,暂时不要太担心。这是一项正在进行的工作,在这个领域有很多突破性进展(比如elm css),当人们开始掌握它时,你可能会看到一些博客文章和组件出现。(不幸的是,当你修补尖端时,会发生这种情况……不过,如果你想加入发现的乐趣,Elm社区非常欢迎你,而且非常有趣,因为似乎每个人都在一起学习:D)我也想知道这一点,关于使用引导,您可以使用CSS类,但这可能会变得混乱 最后,您将编写单独的CSS文件,并使用更少的或SASS、Stylus或其他编译为CSS的语言 因此,在Elm代码中,使用CSS类:
div [ class "whatever" ] [ text "Hello world" ]
我会使用端口来包装外部JS组件。我知道这个问题很久以前就得到了回答,但我想我应该为Elm 0.17和0.18添加0.02美元。请查看,和
这是一个流畅而详尽的界面。链接都断开了这就是我所做的。我发现语义用户界面非常适合使用没有JS位的样式。