ClojureScript/Clojure应用程序的开发“模型”

8
注意:我是一名后端(Java)开发人员,业余时间使用Clojure。请原谅我的无知。
我正在努力理解Clojurescript以及它如何与我正在工作或计划中的项目相适应。由于我成长于“传统”的Web开发思维模式(例如,Clojure运行后端,通过JSON将数据分发到前端进行JS处理或返回HTML页面供浏览器渲染),因此我很难理解Clojurescript如何比这种模式更好。
有人能向我解释一下Clojurescript/Clojure开发的一般方法吗?“Clojurescript One”项目名称表示应用程序开发将在一个语言下统一进行。
以下是需要翻译的内容:
  • 应用程序的Clojurescript部分通常会执行哪些任务?
  • 应用程序的Clojure部分(例如后端)通常会执行哪些任务?
如果有任何帮助,或者如果有人可以指向一些图表、解释或其他任何东西-那就太好了!

4
Clojurescript只是将代码重写为Javascript,因此在“传统”模型中用Clojure替换Java,用Clojurescript替换Javascript即可。收益来自于Clojurescript非常类似于Clojure,这意味着你可以在前端和后端之间共享应用程序逻辑。 - Peteris
4个回答

7

我认为Clojure/ClojureScript应用程序的结构与X后端技术+JavaScript非常相似。

使用Clojure和ClojureScript架构应用程序的一个重要优点是,它提供比JSON更丰富的数据格式(您可以表示具有任意键的哈希映射和集合),而不会失去紧凑性。

JavaScript是一种很好的语言,但ClojureScript提供了许多好处。它在语义上更简单(函数式),附带有丰富的标准库、一个经过充分测试的强大应用程序库(Google Closure)以及通过宏的巧妙应用所获得的所有优势。

尽管如此,它仍然是非常初级的软件,工具链仍需要大量改进。


2

关于我,我使用过Clojurescript、JQuery、Vaadin、Servlets、JSP和许多其他Web技术。

1)Clojurescript比我使用过的任何其他Web技术都要难学得多,因为你需要具备Java、Clojure、Closure(带有s的),Closure Lib和Closurescript特定的知识。

2)对于小型应用程序来说,Clojurescript没有意义。只有当你需要进行大量客户端处理时才有意义。

3)据我所见,Clojurescript 的唯一用途是作为更好的 JavaScript(这就是为什么它更适合较大的应用程序),因为 Clojurescript 的压缩器部分也可以用于 JavaScript。

4)只有客户端会使用 JavaScript 编写,服务器将使用 Clojure/Java servlets。


3
我认为ClojureScript开发中的困难主要是由两个方面造成的:1)它仍然是alpha质量的软件,2)存在工具问题。 - dnolen

1
对我而言,Clojure和ClojureScript比混合堆栈提供更清晰的代码。只有一种语言需要考虑,代码很容易阅读。
在后端方面,Clojure执行Java通常会执行的操作。输入验证、保存到数据库以及最重要的是实现业务逻辑。我们的后端还使用棱镜模式验证传入/传出数据的类型。
简而言之,在前端方面:我们使用ClojureScript获得漂亮的代码,并且编写速度很快。我们在编写UI组件时使用material-ui的ClojureScript版本。与JavaScript相比,我们需要编写的代码较少,我发现我们的UI组件代码比JavaScript同行更易于阅读。其中一个主要原因是更短的闭合标签和更少的编码语言噪音。使用ClojureScript进行开发非常快速。
当然,ClojureScript也用于简单的输入验证,例如电话号码的RegExp等。
你可能已经注意到Clojure的一个缺点是在给函数命名后会产生很长的行。我还没有找到应对这个问题的完美解决方法。

正如dnolen所说:ClojureScript仍在发展中。它比6个月前好多了,所以你需要不时地检查它的成熟度。


1
也许 Ganelon 微框架(顺便说一下,我是它的作者)适合你的需求——执行模型类似于 Vaadin:服务器端 Clojure 代码通过 AJAX/JavaScript 将 UI 更新推送到浏览器,但我们默认不在会话中存储应用程序状态。演示和文档可在 http://ganelon.tomeklipski.com/ 找到。

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