Scala-JS用于真实的Web项目

时间:2014-02-17 14:21:47

标签: scala playframework client-side-validation scala.js

是否有人在真正的网络项目中使用Scala-JS,但不仅仅是在隔离的环境中使用JavaScript替换?

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

这就是为什么我对小工作解决方案感兴趣,以及引导(例如PlayFramework app Scala-JS)。

可以证明Scala-JS可用于实际网络开发工作的解决方案/示例。

我问,因为what I found关于Scala-JS到目前为止几乎没有真正使用它。

问:有些例子/证明它已准备好用于实际项目吗?

更新(1年后):

例如TypeScript有很多例子。这就是我说“例子”和“真正的网络项目”时的意思。还有许多在线培训。如果我在Google中查询:“typescript github angular”,它会返回 172 000页ScalaJS绝对不幸地完全没有。

但它有一些:'“scala-js”github angular' - 4 980匹配。但到目前为止,大部分都是“没有商业支持”的“发展的早期阶段”

那个看起来很有希望:https://github.com/greencatsoft/scalajs-angular

7 个答案:

答案 0 :(得分:28)

我还没有特别看到客户端表单验证。但是,有几个项目有效地使用Scala.js,其中包括:

答案 1 :(得分:15)

我刚刚注意到这个问题,并且可能应该插入 - 如上所述,我公司的产品Querki现在已经完全用Scala.js构建了它的UI。这是关于Scala的8k SLOC,最后我检查过:不是世界上最大的程序,但比大多数网站复杂得多。我猜它会取代原本可能是20-30k SLOC的JavaScript,而且实际上这是该公司合理的唯一方式。

这是一家小公司的测试版,但非常适合生产,而且它是天赐之物:SJS代码 比JavaScript更容易编写和维护它取代了,在实践中更加稳定。此外,将SJS前端连接到我的Akka / Play后端可以极大地加速开发,并减少错误,因为API在端到端Scala中是强类型和无样板的。

由于人们已经问过:优化后的JS代码目前约为1兆,而且现在我的所有基础架构都已编写,增长速度相当慢。 (再加上我使用的JS库也是如此。)这不是微不足道的,但它是每次发布的一次性加载;一旦它被缓存在浏览器中,用户界面非常快,比那里的动态页面快得多。

哦,既然你正在寻找一个完整的例子:可以找到源代码on GitHub。这是一个开放但受限制的,因为它是一种商业产品,但随意挖掘并用它来获取灵感。 (并随意请求有用的部分:我逐渐将广泛有用的部分提升到麻省理工学院许可的库中。)

答案 2 :(得分:9)

我正在使用scala.js为我的创业公司积极构建dashboard webapp。它不完整,但发展很快。

我的初始原型基于angular.js,使用angulate bindings。之后我用scala.rxscalatagsscalacss的反应式网格替换了角度,它利用了scala类型系统。所有的逻辑/渲染都是类型安全的,并且使用一种语言(scala),而不是分散在" stringly-typed" HTML,CSS和JavaScript

虽然这个webapp是作为内部工具开发的,但它应该能够在真实世界的应用程序中完成后展示scala.js。

答案 3 :(得分: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

  4. 以上所有内容都展示了相当先进的功能。技术。

    细心的读者可以学到很多东西,并为自己确定ScalaJS是ready for prime time

    最后,这个https://github.com/SemanticBeeng/play-scalajs-showcase是原始版本的衍生物,展示了如何应用事件源和功能域模型,从面向CRUD的API转变为功能API。 这是一项实验并且正在进行中。

答案 4 :(得分:4)

最近(2016年),您有sri (Scala React interface)

这是一个scalajs库,可以构建真正的原生跨平台(移动(ios和android)和web)应用程序。
它基于reactjsreact-native

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

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

答案 5 :(得分:1)

官方Scala.js主页列出了使用Scala.js构建的项目:http://www.scala-js.org/community/

答案 6 :(得分:1)

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

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