2017-07-31 24 views
0

我刚开始clojurescript。我注意到的第一件事是在React周围有多个包装库。我没有找到任何丰富的选择,比如我们在Javascript中的选择(骨干,余烬,角度等选择)。看起来像CLJS社区自然倾向于React,因为它们都支持不可变的数据结构。什么是在clojurescript写的框架/包装库

我们绝对可以导入国外的图书馆,但他们并不适合自然,因为他们倾向于使用JS数据结构而不是CLJS。

所以如果你想开始没有React包装器的冒险,会有什么样的选择?

+0

我认为这个问题是过于宽泛,可以回答在计算器上。如果你有一个最喜欢的框架,你想用clojurescript并提出一个具体的问题,你会有更多的机会得到一个很好的答案。话虽如此:我认为将clojurescript与更大的js框架结合起来非常困难,并且让你感觉自然是正确的。 –

+0

那么,我没有任何喜欢的框架。我只是在探索可能性。 – user103054

回答

0

我想大多数CLJS框架基础上作出反应,因为它做一个工作得好:管理DOM的反应更新。当数据(即组件的道具)改变时,React可以仅用于渲染视图,而管理应用程序的数据(即状态)仍然是单独的问题。状态管理是ClojureScript框架(例如,Om Next,Re-frame)开始彼此不同的地方。 (注意:路线只是一个数据为好,尽管很多框架处理它就像一种特殊的东西。)

所以,一个原因作出反应是在CLJS社区流行的就是有利于模块化建筑。此外,React文档鼓励使用函数式编程风格,其中大多数组件都编写为函数。虽然您需要特殊的技巧(例如,Immutable.js)以在JavaScript中强制执行,但React也可以很好地处理不可变数据。这就是说,使用ClojureScript中较大的整体框架(参见POC Angular 2 site here)当然是可以的,但它可能非常麻烦。在最低级别,就可以使用JavaScript的直接互操作(见CLJS cheatsheet),直接操作DOM:

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

我同意。 Cljs在管理数据方面非常出色,而React只处理dom突变。但是如果某人由于授权问题而不想使用React会怎么样。没有任何替代品。 正如我前面提到的,如果我们尝试使用任何其他JS框架,他们不适合。 我很想知道是否有任何努力已经投入到开发框架的cljs可能只是摘要_view_层(如om没有React)或者一个新的。 – user103054

+0

我刚刚通过Google搜索“Enlive CLJS”发现了[Enfocus](http://ckirkendall.github.io/enfocus-site/)。 [view binding](http://ckirkendall.github.io/enfocus-site/index.html#view-binding)上的文档描述了状态改变时的反应式UI更新。 –

+0

有趣。我会探索。谢谢。 – user103054