加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala.js – ScalaJS发出EmberJS代码?

发布时间:2020-12-16 18:16:21 所属栏目:安全 来源:网络整理
导读:我想编写可以转换为EmberJS代码的 Scala代码. 可以吗?如果没有开箱即用任何关于如何通过黑客攻击ScalaJS实现这一目标的建议? 问候. 解决方法 Scala.js可以发出任何类型的 JavaScript代码,所以从技术上讲,答案是肯定的.但是,由于Ember要求您使用各种类型的
我想编写可以转换为EmberJS代码的 Scala代码.

可以吗?如果没有开箱即用任何关于如何通过黑客攻击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库来解决这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读