scala.js - ScalaJS 发出 EmberJS 代码?

标签 scala.js

我想编写 Scala 代码,然后可以将其转换为 EmberJS 代码。

可以做到吗?如果不是开箱即用的关于如何通过破解 ScalaJS 来实现的任何建议?

问候。

最佳答案

Scala.js 可以发出任何类型的 JavaScript 代码,所以从技术上讲答案是肯定的。但是,由于 Ember 要求您使用自己设计的各种类来定义“组件”,因此在 Scala.js 中编写可能有点难看。例如,这个例子取自首页:

App.GravatarImageComponent = Ember.Component.extend({
  size: 200,
  email: '',

  gravatarUrl: function() {
    var email = this.get('email'),
        size = this.get('size');

    return 'http://www.gravatar.com/avatar/' + hex_md5(email) + '?s=' + size;
  }.property('email', 'size')
});

必须用 Scala.js 编写为:

import scala.scalajs.js
import js.Dynamic.{global => g, literal => lit}

g.App.GravatarImageComponent = g.Ember.Component.extend(lit(
  size = 200,
  email = "",

  gravatarUrl = ({ (ths: js.Dynamic) =>
    val email = ths.get("email")
    val size = ths.get("size")
    s"http://www.gravatar.com/avatar/${g.hex_md5(email)}?s=$size"
  }: js.ThisFunction).asInstanceOf[js.Dynamic].property("email", "size")
))

这是,嗯...... JavaScript-ish。

强大的 JavaScript UI 库在某种程度上依赖于 JavaScript 的动态和奇怪的方面,以至于它们不太适合 Scala.js。我打算在本学期编写一个专门为 Scala.js 设计的类似 React.js 的 UI 库来解决这个问题。

关于scala.js - ScalaJS 发出 EmberJS 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21932309/

相关文章:

正则表达式模式匹配在 scala.js 中不起作用?

scala - 如何为 Binding.Scala 执行单元测试?

javascript - scalajs 作用域中的对象和 js.global 作用域中的“相同”对象有什么区别?

scala - 提供 Scala.js Assets

scala.js - ScalaJS : How to create Option[A] from JS?

sbt - 如何结合crossProject和dependsOn

scala.js - scala.js 中的 argument.callee

scala - scala.js 1.0 中的@JSGlobalScope(JavaScriptException、ReferenceError、var 未定义)

javascript - 斯卡拉JS : Call a Javascript function on an element

scala - 如何在 scala.js 中使用 scala.sys.process