什么是用clojurescript编写的框架/包装库

时间:2017-07-31 08:54:55

标签: reactjs functional-programming clojurescript

我刚开始使用clojurescript。我注意到的第一件事是在React周围有多个包装器库。我没有找到任何像Javascript那样丰富的替代品(像骨干,灰烬,棱角等选择)。看起来像CLJS社区自然倾向于React,因为它们都支持不可变数据结构。

我们绝对可以导入外部库但它们不适合自然,因为它们倾向于使用JS数据结构而不是CLJS。

所以,如果有人想在没有React包装器的情况下开始冒险,会有什么选择?

1 个答案:

答案 0 :(得分:0)

我认为大多数CLJS框架都建立在React上,因为它做了一份工作:管理 DOM的反应性更新。当数据(即组件的 props )改变时,React可以仅用于呈现视图,而管理应用程序的数据(即状态)仍然是一个单独的问题。状态管理是ClojureScript框架(例如Om NextRe-frame)开始彼此不同的地方。 (请注意, route 也只是一段数据,尽管许多框架像处理一种特殊的事情一样处理它。)

因此,React在CLJS社区中流行的一个原因是它支持模块化架构。此外,React文档鼓励使用函数式编程风格,其中大多数组件都是作为函数编写的。 React也可以很好地处理不可变数据,尽管你需要特殊的技巧(例如,Immutable.js)来在JavaScript中强制执行它。

话虽这么说,当然可以使用ClojureScript中更大的单片框架(参见POC Angular 2 site here),但它可能非常麻烦。在最低级别,您可以使用直接JavaScript互操作(请参阅CLJS cheatsheet),直接操作DOM:

(-> js/document
  (.getElementById "app")
  (.-innerHTML)
  (set! "CLJS rocks!")