问题 可以从ClojureScript中使用的JavaScript GUI库?


在我正在进行的一个Web开发项目中,我们需要创建一个页面(实际上是一个自己的迷你应用程序),它将具有交互式“Web 2.0”界面,更像是一个图形桌面应用程序,而不是典型的Web页面。

我希望使用更高级的语言,可以编译为JS用于客户端逻辑,而不是直接在JS中编程,而ClojureScript是我的首选。

我正在寻找一个可以在ClojureScript中使用的JS GUI库,它支持类似于“桌面”GUI库的编程风格,如Swing,QT,wxWidgets等。它应该允许我创建弹出窗口 <div> “窗口”,放置按钮/标签等小部件。在其中,将事件处理程序附加到窗口小部件,等等。你知道一个会起作用吗?


976
2017-10-02 12:34


起源

男人,如果JavaScript被认为是“太低级别”,我必须变老! - lobsterism
抛开讽刺,我建议你直接使用JavaScript。因为这是所有内容编译的基础,所以要好好学习,并且不要依赖某些更高级别的东西来希望做你想做的事情。一旦你掌握了基础,就学习抽象。在你学习基础之前,抽象只是一些随机的其他人/公司妨碍你真正想做的事情,以及你真正需要知道的事情。 - lobsterism
@lobsterism,感谢您的建议,但我已经知道了JS,并且我有充分的理由不想直接在JS中编写这个应用程序。 - Alex D


答案:


您应该考虑使用Google Closure Library。它具有您提出的所有功能,并且绝对可以从ClojuresScript中使用,我玩过它。看到 http://closure-library.googlecode.com/svn-history/r1430/docs/index.html


4
2017-10-08 11:36



好的,我会检查出来的......谢谢! - Alex D
嗯。看起来Closure没有布局管理器......这似乎是一个重大缺陷。 - Alex D
我不敢。它拥有所有可以想象的小部件,事件处理等丰富的集合,但您必须处理布局。我只是使用twitter bootstrap放置<div> s,然后关闭小部件。 - Assen Kolov
真?我今天稍微研究了一下Twitter Bootstrap,但是没有看到任何处理布局的东西。猜猜我得再看一遍...... - Alex D
那么,在bootstrap的文档中它是布局: twitter.github.com/bootstrap/scaffolding.html#layouts。 - Assen Kolov


Clojurescript还很年轻 - 我不认为有这样的成熟框架(但是?)。话虽如此,我正在使用以下组件构建UI:

Clojure和Clojurescript的一个很好的特性是它们支持通用数据结构上的简单函数。这就是为什么你倾向于看到几个较小的库来完成一项特定的工作,但是工作得非常好,而不是具有对象模型的巨型单片框架,需要你完全采用一种思维方式。


5
2017-10-04 10:46



+1。现在我只对客户端感兴趣,但也感谢其他信息。所以你在客户端使用Hiccup来动态生成GUI元素? Fetch / Shoreleave怎么样?你正在使用那些 都 服务器和客户端?我知道Web服务器没有好的方法将通知推送到客户端JS,所以你必须进行轮询吗?或者您的申请不需要它? - Alex D
我正在使用Crate从打嗝式数据动态生成html,并使用jayq(JQuery)来操作DOM。我想使用Shoreleave的pubsub机制,声明性地将状态(原子),函数,以及在DOM中呈现某些东西的其他函数挂钩;这都是客户端,没有pubsub远程事件发生。 - Gert
我查看了Twitter Bootstrap,但它不允许像桌面GUI编程那样的GUI编程风格。它仍然坚持“手工黑客HTML / CSS”阵营,这不是我想要的。 - Alex D


我认为ExtJS在你的情况下是最好的,即使这是纯粹的JS。这是目前最先进的Web GUI库,它可以像使用桌面语言和IDE一样创建Web应用程序。看看他们的 演示。我不认为在预见的未来ClojureScript会有类似的东西。


2
2017-10-08 09:13



我没想到找到一个ClojureScript库 - 这就是为什么我要求一个可以的JS库 用过的 在ClojureScript中。谢谢你的建议。我会评估它。 - Alex D
嗯。我正在研究ExtJS,但它似乎有很多缺点。 ExtJS4试图成为我不想要的整个应用程序框架(包括控制器,模型等)。我只想要一个GUI库。您必须购买许可证才能在闭源应用程序中使用它。可用的示例和教程的质量很差。 GUI小部件演示看起来很棒,但它们不提供源代码。 - Alex D