Scala-JS 用于真实的 Web 项目

24

有没有人在真实的Web项目中使用过Scala-JS,而不仅仅是在隔离的环境下取代JavaScript

我想尽可能多地使用Scala(我希望我可以)。 而且似乎Scala-JS声称是我现在或将来可以使用的库。

这就是为什么我对一个小的工作解决方案感兴趣,以查看它,以启动(例如,PlayFramework应用程序,其中包含Scala-JS)。

该解决方案/示例可以证明Scala-JS可以用于真实的Web开发工作。

我问这个问题是因为迄今为止我所发现的关于Scala-JS内容很少是其真正使用情况。

问:一些例子 / 证明它已经准备好在实际项目中使用了吗?

更新(1年后):

例如有大量的TypeScript示例。我指的是“示例”和“真实的Web项目”。并且有许多在线培训。如果在Google中查询:“typescript github angular”,它会返回172 000页ScalaJS 显然不具备所有这些,非常可惜。

但是它有一些:““scala-js“ github angular” - 4,980个匹配项。但到目前为止,大多数还处于“开发的早期阶段”,并且“没有商业支持”。

这个看起来很有前途:https://github.com/greencatsoft/scalajs-angular

7个回答

28

还有一个 https://github.com/hussachai/play-scalajs-showcase - John M

16

我刚刚注意到这个问题,应该会有所帮助 - 如上所述,我们公司的产品Querki现在完全使用Scala.js构建UI。据我所知,这大约是8k SLOC的Scala代码:不是世界上最大的程序,但比大多数网站复杂得多。我猜它替换了将会有20-30k行JavaScript代码,而这也是公司唯一可行的方式。

对于小公司来说,这已经是一个beta版本,但非常适用于生产,而且它真的很方便:SJS代码比之前的JavaScript易于编写和维护得多,并且在实践中更加稳定。此外,将SJS前端与我的Akka/Play后端连接起来可以极大地加快开发速度并减少错误,因为API是强类型的且无需样板文件,全部使用Scala。

既然有人问:优化后的JS代码目前大约为1兆字节,并且随着所有基础架构的编写而增长缓慢。(再加上我使用的JS库大约相当于同等大小)。这不是微不足道的,但每次发布只需要加载一次;一旦在浏览器中缓存,UI就非常快,比之前的动态页面要快得多。

哦,既然你正在寻找一个完全工作的示例:源代码可以在GitHub上找到。这是开源但受限制的,因为它是商业产品,但请随意浏览并用它作为灵感。(也请随意请求其中有用的部分:我正在逐渐将广泛有用的代码片段提取成MIT许可证的库。)


是的。不过还有一个额外的要点——Scala.js与现有的JS基础设施的互操作性比人们通常预期的要好。Querki就是最好的例子:我正在使用大约十几个开源的jQuery库,结果发现从SJS中使用jQuery比从JavaScript中使用更容易... - Justin du Coeur

9

我正在使用scala.js积极构建一款面向我的创业公司的仪表板web应用程序。它还不完整,但正在快速发展。

我的最初原型基于angular.js,使用angulate绑定。后来,我用scala.rxscalatagsscalacss替换了angular,这是一种反应式风格的网状结构,利用了scala类型系统。所有逻辑/渲染都是类型安全的,并且只使用一种语言(scala),而不是分散在“字符串类型”的HTML、CSS和JavaScript中。

尽管这个Web应用程序正在作为一个内部工具开发,但一旦完成,它应该能够展示scala.js在实际应用中的效果。


完成了吗?)也尝试使用scalarx。 - ses
2
这个Web应用程序具有一些工作示例。我还为scala.js启动了一个SVG可视化库(在底层使用D3)。您可以在此处找到它:https://github.com/yakticus/goggles - Julie

6

然后

  1. W3C在banana-rf中使用它:github.com/w3c/banana-rdf

  2. @jducoeur创建了Querki:github.com/jducoeur/Querki

  3. TypeSafe分享了一个非常实用的模板:typesafe.com/activator/template/play-scalajs-showcase

以上所有内容都展示了相当高级的特性和技术。

仔细阅读者可以学到很多,并且可以自行判断ScalaJS是否已经准备好进行主流实际应用

最后,这个https://github.com/SemanticBeeng/play-scalajs-showcase是原始版本的衍生版,展示了如何将事件源和功能域模型应用于从基于CRUD的API转移到功能API。这是一个实验和正在进行的工作。


我喜欢这个:https://github.com/greencatsoft/scalajs-angular 和这个 https://github.com/greencatsoft/scalajs-angular-todomvc 作为例子。我还在我的问题中加入了UPDATE。 - ses
我们目前正在使用ScalaJS开发贷款管理应用程序,进展顺利。唯一的严重问题是生成的JS文件太大了。我们主要使用SJS是因为它可以实现DRY业务逻辑(并不是完全替代本地JS)。我们仍然使用TypeScript编写客户端,并使用Durandal。 - SemanticBeeng
@SemanticBeeng,你能分享生成的JS文件与手写JS等效文件大小的大致差距吗?即使是粗略的常数因子也会非常有帮助。 - pkinsky
@pkinsky 未经优化的生成代码达到了几兆字节。但请注意,如果我要比较假设的JavaScript代码(我没有)和生成的SJS JavaScript代码,那么我就是在比较苹果籽和橘子酱... SJS是一个Scala后端(不是翻译器;请参见https://dev59.com/FWEh5IYBdhLWcg3wrVLW),因此它使用Scala语言(几乎)全部的功能来生成等效于Scala代码的JavaScript代码。你永远不会查看那些代码,所以大小只与在浏览器中加载有关。 - SemanticBeeng

4

最近(2016年),你有sri(Scala React接口)

这是一个scalajs库,用于构建真正的本地跨平台应用程序(移动(iOS和Android)和Web)。
它基于reactjsreact-native

使用此模块构建基于浏览器的应用程序:

libraryDependencies += "com.github.chandu0101" %%% "sri-web" % "0.6.0"

1
我喜欢它的发展方向。希望它不会落后于原始的js-react(说到scalajs-react)。 - ses

1

借助Binding.scalaScala.js,ThoughtWorks的TodoMVC应用程序如下:

我不知道它是否是一个真正的Web项目,因为它看起来非常简洁。演示仅包含一个源文件,147行代码,而同一TodoMVC功能的ReactJS实现需要488行代码。


1

那些看起来更像广告而不是项目。 - ses

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接