在Clojure中构建Web Dashboard是否可行?

时间:2016-05-13 20:10:16

标签: web clojure dashboard

我打算建立一个网络仪表板,我可以通过图形,表格分析公司的财务记录......

我已经拥有该软件,因此仪表板只会读取数据,而不会对其进行操作。

这将是这样的,但更简单。包含报告,图形,选择日期,间隔等的选项。 Gentella

但我在想,使用Clojure是否可行?还有jQuery,CSS,HTML。

目前我正在使用Luminus Web Framework for Clojure,但我想知道在Clojure中是否值得这样做,或者是否有更好的其他语言。

当然我已经熟悉这种语言,所以它是专业人士。但我也愿意接受建议。

4 个答案:

答案 0 :(得分:3)

一点都不难!实际上,存在很好的库来解决构建仪表板所涉及的所有挑战 - 调度,缓存,将数据传输到客户端,可视化(以及自动重新加载)。

我们正在开发一个用于构建实时Clojure仪表板的框架。看看https://github.com/multunus/dashboard-clj。我们使用了以下库:

为了创建漂亮的可视化效果,您可以查看d3或highcharts。 CLJSJSReagent cookbook将很好地概述如何使用这些js库(以及更多)。

答案 1 :(得分:2)

Clojure是用于构建Web仪表板的绝对出色的工具。这里的其他答案在布局基本Web技术方面做得很好。在这方面,我只是简单地添加一下我是一个很大的Reagent / Re-frame风扇,并且会沿着Om沿着那条路线进行React包装。

就数据可视化而言,您可能对签出Vega-Lite&Vega感兴趣,可以通过我编写的一个简单但灵活的dataviz库(称为Oz)从Clojure或ClojureScript(试剂)中使用它。

https://github.com/metasoarous/oz

Vega-Lite和Vega是根据图形语法的思想设计的,该思想启发了R的流行ggplot2库。核心思想是,应根据有关数据属性如何映射到可视化美学的声明性描述来构建数据可视化。但是,Vega-Lite&Vega在提供交互语法方面迈出了一步,该交互语法可用于构建交互式数据可视化和复杂的资源管理器视图。此外,它在GG声明性上的优势在于,将Vega-Lite和Vega规范描述为纯数据(JSON),使其与Clojure世界的数据驱动哲学非常一致,并铺平了道路与其他语言的无缝互操作性和共享功能。

Vega-Lite或多或少是杠杆更高的,日常的数据科学工具,致力于基于非常简明的规范提供高杠杆率和自动化。它可以编译为Vega,这是Vega-Lite的较低级别且功能更强大但自动化程度较低的版本。通常从Vega-Lite开始,然后仅根据需要切换到Vega就足够了。

有关Vega和Vega-Lite的更多信息,请参见:https://vega.github.io

答案 2 :(得分:1)

我没有看到为什么在Clojurescript中构建网络信息中心不可行的原因。

我建议您查看一个库调用reagent,它提供了react和clojurescript之间的简约界面,所以从理论上讲,你可以用clojurescript / reagent进行反应的所有事情(还有它的附加好处)会比React快。)您可能对reframe感兴趣,Wilma是构建单页面应用程序的框架。

React已被证明是构建强大UI的强大工具。

答案 3 :(得分:1)

您可以使用ClojureScript在JavaScript中执行所有操作(正如您可以使用Clojure在Java中执行的所有操作一样)。正如其他人评论的那样,我肯定会推荐ClojureScript,特别是因为你已经知道了Clojure。你可能会发现你不需要jQuery等。

生成html的常见选择是通过包装库使用React.js,如:

两者都可以生成HTML。

Reagent(也许re-frame)是最容易上手的。特别是因为有soda-ash之类的组件库,以及类似打嗝的语法。

Om(由ClojureScript的创建者提供),也许untangled也是一个不错的选择,特别是如果您需要管理复杂的数据。您可以通过sablono获得类似打嗝的语法。 已使用它构建了仪表板(请参阅circleCI dashboard作为真实的仪表板示例)。这是我亲自使用的那个。

正如你所提到的,

Hoplon也是一个有趣的选择。

另请查看pre-packaged js libraries的cljsjs。

至于CSS,这是一个正交的问题,但是当然你可以使用它(或者更少和sass,它有Clojure包装器)。您甚至可以使用garden

从Clojure代码生成CSS

您可以使用boot(由与hoplon相同的作者),sass,名为saapas的试剂找到一个示例项目,但还有更多在野外。

如您所见,ClojureScript中有许多可行的选项可用于构建仪表板。我自己建立了一个并且定居在Om.next,部分是因为我之前使用的是React.js.