首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scalajs-react VS Xored -react VS SRI

Scalajs-react VS Xored -react VS SRI
EN

Stack Overflow用户
提问于 2015-10-14 20:41:11
回答 3查看 2.1K关注 0票数 18

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

  1. Xored Scalajs-react -上次提交是在8个月前。所以我猜开发并不是active anymore.
  2. Scalajs-react --非常活跃,非常完整,并带有一个自定义的URL Router。但是API似乎正在偏离真正的Javascript React代码的编写方式,并且不支持React-native,Scalaz和Monocle的添加增加了库的大小,增加了浏览器必须下载的Javascript的大小。文档说Scalaz和Monocle是选择加入的,所以我猜默认情况下Scalaz和Monocle是不是被排除了?我个人认为这个库可能只是React.js代码的一个非常简单的外观,这将使更新到新版本的React.js变得更容易,而它不是一个简单的外观,这意味着将生成更多的Javascript代码,浏览器将不得不下载更多的代码。我可能错了,请纠正我?
  3. SRI - Newcomer和外观看起来非常完整,支持Web,Relay和React原生,但没有URL路由器支持和DOM DSL。facade API看起来非常精简,与编写Javascript React.js代码非常相似。但它是相当新的,可能还没有准备好投入生产?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-15 01:04:29

截至2015年10月:

  • 我也得出结论,xored/scala-js-react目前并没有得到积极的开发。模板使用的方法是保持XML语法与JSX类似,在某些方面我确实喜欢这一点,特别是因为它使代码看起来更像普通的React。更新:指出了一个带有一点activity.
  • There的,毫无疑问,由于japgolly/scalajs-react正在积极开发中。对React 0.14的支持即将到来。这种方法是使用定制版本的lihaoyi/scalatags进行模板,而不是使用XML语法。这样做的缺点是一开始会让代码看起来有点奇怪,但你会习惯它,它提供了一个很好的type-safety.
  • chandu0101/sri级别是新的,并且希望成为一个更多的跨平台解决方案(web,Android,iOS)。有一个关于让chandu0101/sri使用japgolly/scalajs-reactdiscussion,sri的作者似乎对基于该conversation.

做这件事特别感兴趣

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

票数 18
EN

Stack Overflow用户

发布于 2015-10-16 06:42:02

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

  • scalajs-react的目标是提供最好的Scala体验和类型安全。带有许多Scala好东西,性能工具,支持FP,镜头等(都是可选的)。重点是React for web.
  • xored - Goal在我看来尽可能接近于Scala.
  • Sri中的JSX - Goal在我看来覆盖了最多的JS基础(甚至是中继),并尽可能地接近JS。

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

另外scalajs-react会把它的核心模块分成core和dom来匹配React。我不会屏息等待一个原生模块的添加,除非社区中的某个人让它发生。另一方面,Sri已经在做web & native了,我知道@chandu ( Sri的作者之一)一直在玩弄native,所以在Sri的生命周期中,它应该会得到很多支持和改进。

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

是的,但是一个简单的门面不是我想要的。我想要一个外观,我可以相信我的代码总是可以工作的-很多事情都会出错,随着时间的推移,所有这些精细打印规则和运行时问题都会嵌入到外观类型中,以便scalac可以监视我们。

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

不是一个简单的外观,这意味着将生成更多的Javascript代码,浏览器将不得不下载更多的代码。

是的,没错,但我们在这里讨论的可能只有几KB。完全像150KB+一样使用Scala.JS,它的优化器非常擅长排除你不使用的代码。

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

票数 16
EN

Stack Overflow用户

发布于 2015-10-15 07:28:58

使用Sri,您可以开发web和移动应用程序,其中scalajs-react/Xored -react是以web为中心的应用程序。我从未使用Xored -react,因此无法评论that.Now问题是Sri-web与Scalajs-react

Sri-web vs Scalajs-React

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

1)定义React组件/元素

Scalajs-react有精心设计的ReactComponentB接口,但它基于旧的React.createClass,Sri有基于新的React ES6类React.Component的ElementFactory。In general React.Component is faster than React.createClass,从react 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,还有一个基于URL的WebRouter。

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

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

编辑: btw我是Sri的作者:)

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

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

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33125601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档