Scalajs-react VS Xored Scalajs-react VS SRI



这些Scala.js React.js库之间的区别是什么?为什么我应该选择其中一个而不是另一个?

    xors Scalajs-react -最后一次提交是8个月前。所以我猜开发不再活跃了。Scalajs-react -非常活跃,非常完整,带有自定义URL路由器。但是API似乎偏离了实际Javascript React代码的编写方式,并且没有对React-native的支持,Scalaz和Monocle的加入使库变得臃肿,增加了浏览器必须下载的Javascript的大小。文件上写着Scalaz &单片眼镜是可选的,所以我猜是默认的Scalaz &单片眼镜除外吗?我个人觉得这个库可能只是React.js代码的一个非常简单的门面,这将使更新到新版本的React.js更容易,它不是一个简单的门面意味着将生成更多的Javascript代码,更多的代码浏览器将不得不下载。我可能说错了,请纠正我。
  1. SRI -新来者和外观看起来非常完整,支持Web, Relay和React原生,但没有URL路由器支持和DOM DSL。facade api看起来非常简洁,与编写Javascript React.js代码非常相似。但它相当新,可能还没有准备好投入生产。

如果我错了,请纠正我,因为这里有太多的选项可供选择,并希望有一种方法在Scala.js中编写React.js代码。

截至2015年10月:

  • 我还得出结论,xors/scala-js-react目前还没有积极开发。用于模板化的方法是保持JSX的XML语法,我在某些方面确实喜欢这种方法,特别是因为它使代码看起来更像普通的React。更新:@MxFr指向一个有一点活动的分叉
  • 毫无疑问,as japgolly/scalajs-react正在积极发展中。对React 0.14的支持即将到来。方法是使用自定义版本的lihaoyi/scalatags进行模板,而不是使用XML语法。这样做的缺点是让代码一开始看起来有点奇怪,但你会习惯的,它提供了一个很好的类型安全级别。
  • chandu0101/sri是新的,希望成为一个跨平台的解决方案(web, Android, iOS)。有一个关于让chandu0101/sri使用japgolly/scalajs-react的讨论,基于这个对话,sri的作者似乎对这样做特别感兴趣。

基于以上,目前最有吸引力的解决方案是japgolly/scalajs-react,请记住,这个领域的事情变化很快。

我是scalajs-react的作者,所以我对其他两个库的评论会少得多,希望没有错,但是我们开始吧。

  • scalajs-react -目标是提供最好的Scala体验和类型安全。附带了许多Scala的好东西,性能工具,对FP的支持,镜头等(都是可选的)。Focus is React for web.

  • xors - Goal在我看来是在Scala中尽可能接近JSX的使用

  • Sri -目标看起来对我来说是覆盖最JS的地面(甚至中继),并尽可能接近JS。

当然还有其他细节,(上面的评论提到scalajs-react使用React.createClass而不是扩展React.Component,但这是一个微不足道的实现细节,可以在10分钟内更改,而不会破坏Scala的向后兼容性-我不会担心),但我相信项目级哲学应该是你的决定因素。如果你想接近JS而不大惊小怪,使用Sri;如果你想优先考虑类型安全和Scala体验,请使用scalajs-react。

而且scalajs-react会把它的核心模块分成core和dom来匹配React。除非社区中有人促成,否则我不会对添加本地模块抱太大希望。另一方面,Sri做web &我知道@chandu (Sri的作者之一)一直在使用native,所以它应该会在Sri的生命周期中得到很多支持和改进。

我个人觉得这个库可能只是一个非常简单的外观的React.js代码,这将使它更容易更新到新版本的React.js

是的,但是一个简单的表面不是我想要的。我想要一个facade,我可以相信我的代码将永远工作-许多事情可能会绊倒React,随着时间的推移,所有那些精细的规则和运行时问题被嵌入到facade类型,以便scalac可以监视我们。

(也决定跳过升级到React 0.13不是因为困难。scalajs-react在发布后几天内就获得了React 0.14的支持(目前在scalajs-react v0.10-RC1上)。

不是一个简单的门面意味着将生成更多的Javascript代码,并且浏览器将不得不下载更多的代码。

是的,没错,但我们这里可能只讨论几个KB。使用Scala.JS会增加大约150KB,而且它的优化器非常善于排除你不使用的代码。

希望有帮助!选择是一件好事。

使用Sri,您可以开发web和移动应用程序,其中scalajs-react/xorscalajs -react是以web为中心的。我从未使用过xors Scalajs-react,所以不能对此发表评论。现在的问题是Sri-web vs scalajs-react

Sri-web vs Scalajs-React

对于任何scala react web应用,我们需要3个核心原则1)定义react组件/元素的方法2)一些内置组件/原语/构建块3)路由器

1)定义React组件/元素:

Scalajs-react有设计良好的API ReactComponentB,但它是基于旧的React.createClass,Sri有ElementFactory基于新的React ES6类React.Component。在React中。组件比React快。createClass,作为react 0.14我更喜欢使用react。组件优于React。除非你非常需要mixin。也就是说,我们正在讨论将ReactComponentB和ElementFactory合并到一个公共项目中。

2)基本构建块/原语:

Scalajs-react附带dom-dsl(您可以选择整个dom元素/属性)。Sri还附带了dom dsl和react native-web组件。

3) Router:

Scalajs-react有基于url的路由器。Sri有通用路由器,它可以在移动和web上工作,但它不支持URL,以及基于URL的WebRouter。

Ofc scalajs-react有许多其他的帮助程序和很酷的FP的东西。如果有人不同意我的观点,请随时开始讨论,我很高兴知道新事物:)

最后希望我们能尽快有一个共同的核心项目(1),这样用户就可以根据他们的味蕾选择/切换渲染器,在一天结束的时候scala.js应该会赢:)

编辑:顺便说一句,我是Sri的作者:)

Edit2:更新了路由器部分,因为sri 0.4.0有一个基于url的webrouter。

Edit3:更新了构建块部分,因为sri 0.6.0现在有dom dsl。

最新更新