Scalajs-react VS Xored Scalajs-react VS SRI

haj*_*ime 18 scala.js scalajs-react

这些Scala.js React.js库之间有什么区别?我为什么要选择其中一个?

  1. Xored Scalajs-react - 上次提交是在8个月前.所以我猜测开发不再活跃了.
  2. Scalajs-react - 非常活跃且非常完整,并附带自定义URL路由器.但API似乎正在逐步摆脱实际的Javascript React代码的编写方式,并且不支持React-native,并且添加Scalaz和Monocle会增加库的数量会增加浏览器必须下载的Javascript的大小.该文件称Scalaz&Monocle是选择加入的,所以我猜测默认情况下Scalaz&Monocle被排除在外?我个人认为这个库可能只是React.js代码的一个非常简单的外观,它可以更容易地更新到更新的版本React.js,它不是一个简单的外观意味着更多的Javascript代码将生成和更多浏览器必须下载的代码.我可能在这里错了,请纠正我?
  3. SRI - 新手和外观看起来非常完整,并且支持Web,Relay和React原生,但没有URL路由器支持,也没有DOM DSL.Facade API看起来非常精简,与编写Javascript React.js代码非常相似.但它是相当新的,可能没有准备好生产?

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

ebr*_*hez 18

截至2015年10月:

  • 我还得出结论,xored/scala-js-react目前尚未积极开发.用于模板化的方法是将XML语法保持为JSX,我喜欢在某些方面,特别是因为它使代码看起来更像普通的React.更新:@MxFr指向一个带有一点活动的fork.
  • 毫无疑问,由于japgolly/scalajs-react正在积极开发中.对React 0.14的支持即将到来.方法是使用lihaoyi/scalatags的自定义版本进行模板化而不是XML语法.这样做的缺点是首先使代码看起来有点怪异,但是你已经习惯了它,它提供了良好的类型安全性.
  • chandu0101/sri是新的,希望成为更多的跨平台解决方案(网络,Android,iOS).有一个讨论有关使chandu0101/SRI使用japgolly/scalajs反应的,和SRI在笔者看来这样做基于这样的谈话特别感兴趣.

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


Gol*_*lly 16

我是scalajs的作者 - 反应所以我对其他两个库的评论将不那么明确,希望没有错,但我们走了.

  • scalajs-react - 目标是提供最佳的Scala体验和类型安全性.附带许多Scala好东西,性能工具,支持FP,镜头等(都是可选的.)焦点是对网络的反应.

  • xored - 目标让我看起来尽可能接近Scala中的JSX.

  • Sri -Goal希望我能够覆盖最JS的基础(甚至是Relay)并尽可能地接近JS.

当然还有其他细节,(评论上面提到的scalajs-react使用React.createClass而不是扩展,React.Component但这是一个简单的实现细节,可以在10分钟内改变而不会破坏Scala向后兼容性 - 我不会担心这一点),而不是细节,我相信项目级哲学应该是你的决定因素.如果你想毫不费力地接近JS,请使用Sri; 如果您希望将类型安全性和Scala体验作为优先事项,请使用scalajs-react.

此外,scalajs-react会将其核心模块拆分为核心模块,以便与React相匹配.除非社区中的某个人发生这种情况,否则我不会对添加的本机模块屏住呼吸.另一方面,斯里兰卡已经成为网络和本地人,我知道@chandu(斯里兰卡作家之一)长期以来一直在与土着人玩耍,所以它应该得到更多的支持和改进斯里兰卡的生命.

我个人认为这个库可能只是React.js代码的一个非常简单的外观,它可以更容易地更新到更新的版本React.js

是的,但简单的外观不是我想要的.我想要一个我可以信任的外观,我的代码将始终有效 - 许多事情可以绊倒React,随着时间的推移,所有这些精细打印规则和运行时问题都嵌入到外观类型中,以便scalac可以留意我们.

(此外,跳过升级到React 0.13的决定并非由于困难.scalajs-react在发布后的几天内得到了React 0.14支持(目前在scalajs-react v0.10-RC1上).)

不是简单的外观意味着将生成更多的Javascript代码,以及浏览器必须下载的更多代码.

是的,没错,但我们这里可能只谈了几KB.使用Scala.JS可以增加150KB +,而且它的优化器非常适合排除你不使用的代码.

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


inv*_*ant 11

随着斯里兰卡你可以开发Web和地方为scalajs-反应/异或运算Scalajs反应的是网页centric.I从来没有使用异或运算Scalajs反应的所以不能在that.Now问题发表评论,移动应用是斯里兰卡的web VS scalajs反应的

Sri-web vs Scalajs-React

对于任何阶反应的web应用程序,我们需要3个核心原则1)的方式来定义阵营部件/元件2)有些内置组件/图元/构建块3)的路由器

1)定义React组件/元素:

Scalajs-react有很好的设计API,ReactComponentB但它基于旧的React.createClass,Sri有基于新的React ES6类的ElementFactory React.Component.一般来说,React.Component比React.createClass快,因为反应0.14我更喜欢使用React.Component而不是React.createClass,除非你非常需要mixin.话虽如此,我们正在讨论将ReactComponentB和ElementFactory结合在一起的常见项目中.

2)基本构建块/原语:

Scalajs-react附带dom-dsl(你有完整的dom元素/属性可供选择).Sri还带有dom dsl和react-native-web组件.

3)路由器:

Scalajs-react有基于url的路由器.Sri有UniversalRouter,它既适用于移动设备,也适用于网络,但不支持网址和基于URL的WebRouter.

Ofc scalajs-react有许多其他助手和酷FP的东西.如果任何人不同意我的观点,请随意开始讨论我很高兴知道新的东西:)

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

编辑:顺便说一句我是斯里兰卡的作者:)

Edit2:更新的路由器部分为sri 0.4.0有一个基于URL的webrouter.

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