可用于ClojureScript的JavaScript GUI库?

11

在我正在进行的一个网站开发项目中,我们需要创建一个页面(实际上是一个小型应用程序),该页面将具有互动性、"Web 2.0"界面,更像图形桌面应用程序而不是典型的网页。

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

我正在寻找一个JS GUI库,可以从ClojureScript内部使用,并支持类似于“桌面”GUI库(如Swing、QT、wxWidgets等)的编程风格。它应该允许我创建弹出式

窗口,将按钮/标签/等小部件放入其中,将事件处理程序附加到小部件上等。你知道有哪些库可以胜任这个任务吗?


1
哎呀,如果JavaScript被认为是“太底层”的话,我一定是老了! - lobsterism
开玩笑的,我建议你在你的位置上直接使用JavaScript。因为这是所有编译成的基础,学好它,不要依赖于一些更高级别的东西来希望做你想做的事情。然后在掌握了基本技能之后再学习抽象概念。在你学会基本技能之前,抽象概念只是一些随机的其他人/公司阻碍你真正想做的事情和你真正需要知道的东西。 - lobsterism
1
@lobsterism,感谢您的建议,但我已经了解JS,并且有充分的理由不想直接用JS编写此应用程序。 - Alex D
3个回答

5
Clojurescript还很年轻 - 我认为还没有成熟的同等级框架(还没有吗?)。话虽如此,我正在使用以下组件构建UI: Clojure和Clojurescript的一个好处是它们倾向于在通用数据结构上使用简单函数。这就是为什么你会看到几个小型库,每个库都专注于一个特定的功能,但它们可以很好地协同工作,而不是使用需要你完全采用一种思维方式的对象模型的巨大的单体框架。

+1. 现在我只对客户端感兴趣,但还是谢谢你提供的其他信息。那么,您是在客户端上使用 Hiccup 以动态生成 GUI 元素吗?Fetch/Shoreleave 呢?您会在服务器和客户端两边都使用它们吗?我知道 Web 服务器没有好的方法推送通知到客户端的 JS,所以你必须轮询吗?或者这对您的应用程序不是必需的? - Alex D
我正在使用Crate从hiccup-style数据动态生成html,并使用jayq(JQuery)操作DOM。我想使用Shoreleave的pubsub机制将状态(原子)声明性地连接到函数,以及渲染DOM中的其他函数; 这全部都是客户端的,没有远程pubsub发生。 - Gert
我研究过Twitter Bootstrap,但它不允许像桌面GUI编程一样的GUI编程风格。它仍然坚定地站在“手工hack HTML/CSS”的阵营中,这不是我想要的地方。 - Alex D

4

嗯,看起来Closure没有布局管理器...这似乎是一个很大的缺陷。 - Alex D
1
很抱歉,不行。它拥有丰富的小部件、事件处理等所有可想象的功能,但您需要自己处理布局。我只是使用 Twitter Bootstrap 来放置 <div>,然后在其中添加闭包小部件。 - Assen Kolov
真的吗?我今天稍微研究了一下 Twitter Bootstrap,但没有看到任何处理布局的东西。我想我得再看看... - Alex D
在Bootstrap的文档中,它是布局:http://twitter.github.com/bootstrap/scaffolding.html#layouts。 - Assen Kolov
你可以使用Skeleton代替Bootstrap - 它具有极简主义风格,仅限于布局和一些合理的样式规范化:http://www.getskeleton.com/ - Gert
显示剩余2条评论

2

我认为在您的情况下,ExtJS 是最合适的选择,尽管它是纯 JS。这是目前最先进的 Web GUI 库,可以让你创建类似使用桌面语言和 IDE 创建 Web 应用程序的方式。只需查看他们的演示。我认为在可预见的未来 ClojureScript 不会有类似的东西。


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

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