这些Scala.js React.js库之间有什么区别?为什么我应该选择一个而不是另一个?
如果我错了,请纠正我,因为这里有太多的选项可供选择,并希望有一种方法可以用Scala.js编写React.js代码。
发布于 2015-10-15 01:04:29
截至2015年10月:
做这件事特别感兴趣
基于以上内容,目前最有吸引力的解决方案是japgolly/scalajs-react,请记住,在这个领域,事情变化很快。
发布于 2015-10-16 06:42:02
我是scalajs-react的作者,所以我对其他两个库的评论将会少得多,希望没有错,但我们开始吧。
当然,还有其他细节(上面提到的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,它的优化器非常擅长排除你不使用的代码。
希望这能有所帮助!选择是一件好事。
发布于 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。
https://stackoverflow.com/questions/33125601
复制相似问题