在浏览器中直观地测试clojure函数的输出



我正在开发一个Clojure应用程序,该应用程序从web下载图像并根据特定标准对其进行分析。

无论这意味着什么,重要的是,应用程序中会有一些相当昂贵的功能,这些功能需要一段时间才能处理。

最终,将有一个API向web前端公开应用程序的功能。不过,这是第二步。

由于该应用程序与图形有很大关系,因此在开发过程中可视化我正在编写的函数的输出是有意义的。基本上,我正在寻找一种简单的方式/环境来归档它。更准确地说:每当我创建一个新函数时,我都想在浏览器中测试它的功能:例如,绘制输出,绘制一些中间步骤,也许创建一些小的交互式脚本,这些脚本可以帮助我监督算法是否在做我想做的事。注意:我不想将函数转换为ClojureScript,让它们在浏览器中运行,浏览器应该只是一个"显示器"。

我想到的一些方法:

  • 编写一个小型后端服务器,公开命名空间的所有功能。因此,前端可以通过向服务器发送ajax请求来访问所有这些函数,该请求将函数及其参数包含在字符串中,或者更好的是edn格式。后端接收请求,调用请求的函数,并在计算完成时发回结果。可能已经有一个项目,正是这样做的吗?

  • 使用像"Gorilla Repl"这样的项目这将是一个很好的选择,也许我会使用它。然而,我还不知道它的机制是否涵盖了交互影响渲染输出的方式。它更像是一个具有静态渲染的工作表。

你们会怎么做?欢迎提出任何建议。

我一直在处理类似的问题,我认为你可以使用Lighttable+Clojure+Nerdy painter(插件)的组合。

Nerdy painter允许您在Lighttable(IDE)上显示图像。对于数据探索或与图形/绘图有关的任何事情都非常有用。

免责声明:我是书呆子画家的作者,但我认为最快/最优雅的解决方案是我上面描述的。所有其他解决方案都会给开发周期增加(IMHO)过多的开销。

一种可能性是使用Jupyter的clojure内核与clojure进行交互。Jupyter在浏览器中运行,您可以添加自定义绑定以简化对DOM的访问。

这里有一个clojure内核:https://github.com/roryk/clojupyter

最新更新