Scala.js 是一款将 Scala 代码编译为 JavaScript 代码的编译器,该编译器支持全部 Scala 语言特性。借助于 Scala.js,开发者能够使用 Scala 开发从前端到后端的 Web 应用,而且 Scala.js 还带来了在服务器和客户端之间复用代码的可能性。Scala.js 值得关注的特性包括:

  • 支持 Scala 语言的所有特性,包括宏 (macros),仅有一些语义的不同;
  • 同 JavaScript 代码具有良好的互操作性,如 Scala.js 代码中以类型化或者非类型化方式使用 jQuery 和 HTML5、创建 Scala.js 对象和 JavaScript 代码中调用对象的方法;
  • 集成了 Scala 的流行构建工具 sbt ,支持依赖管理和增量编译;
  • 能够使用 Scala IDE 进行编码;
  • 能够生成一个源代码和生成代码的映射,从而提供了 Scala.js 和 Scala 二者之间平滑过渡的调试经历,在浏览器中单步调试 Scala 代码且且支持源码间的映射;
  • 集成了来自谷歌、用于生成紧凑且高性能代码的工具 Closure Compiler ,为产品以生成最小的代码;
  • 生成非常高效的 JavaScript 代码, 参考基准测试信息。

Scala.js 已形成了一个良好的生态圈,生态圈内容包括:

  • 测试框架: uTest 、 MiniTest 、 Little Spec 、 Nyaya 、 zcheck 等,这些测试框架实现了在 JVM 和 JavaScript 间的交叉编译;
  • UI 框架: scalajs-react 、 scala-js-binding 、 scalajs-angular 、 scalajs-angulate 、 Widok 等;
  • 序列化库: uPickle 、 Prickle 、 Scala.js Pickling 等;
  • **其他:**用于客户 / 服务器端通讯库 autowire 、HTML 模板库 Scalatags 、可视化库 Paths.scala.js 等。

Scala.js 基于 Scala 许可协议发布,代码托管在 GitHub ,当前最新版本是 0.6.2。有关 Scala.js 的 API、使用指导和参考指南,请读者参考官方提供的相关文档。此外,官方还提供了使用教程、开发文档以及在浏览器中查看运行效果的在线工具。

什么是 Scale.js ?相关推荐

  1. js实现手机端图片双指缩放变大变小插件

    对于手机上图片的缩放通常有两种: 一种是屏幕上有一张图片,直接双指缩放,如下图: 还有一种是类似于手机相册一样,一张一张的,点击单张之后,全屏打开,在进行缩放操作,如下图: 接下来,介绍第一种情况的插 ...

  2. JavaScript模块化开发技术概述

    2019独角兽企业重金招聘Python工程师标准>>> 什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应 ...

  3. WEB入门之十九 UI

    视频课:https://edu.csdn.net/course/play/7621 学习内容 jQuery UI核心 jQuery UI交互组件 jQuery UI微件 jQuery效果库 能力目标 ...

  4. jqueryui 1.8.19引用顺序(及var basePrototype = new base()错误)

    在jqueryui1.8.19中,发现它没有使用原来1.8.17里边那个巨大的260K的单个js,而是把各种JS散开放了,有效地防止了JS下载的带宽. 不过放错顺序,会出现各种错误,不一而足,比如标题 ...

  5. 前端JAVASCRIPT模块化开发

    什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等 ...

  6. 2021移动端图片点击放大,插件swiper使用

    方法1 <!DOCTYPE html> <html><head><meta charset="UTF-8"><title> ...

  7. 手机端点开图片全屏且手指缩放

    dom结构 <div class=" informBlock"><img src="'+list[i].url+'" class=" ...

  8. 移动端单击图片放大缩小

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  9. vue项目,h5图片放大后,支持手指缩放功能

    html: <template><div id="knowledge-base"><div class="knowledge-title&q ...

最新文章

  1. 多项目管理,研发管理,敏捷开发软件
  2. 记一次suse linux崩溃
  3. YUV格式学习:YUV420P、YV12、NV12、NV21格式转换成RGB24
  4. @SuppressWarnings(resource)
  5. 【网络信息安全】Web 安全
  6. PS人像修图技巧——高低频磨皮
  7. 使用Python对比两个excel表格中的重复数据
  8. 文献阅读——Revisiting Semi-Supervised Learning with Graph Embeddings
  9. 设计算法判断单链表的全部 n 个字符是否中心对称
  10. android网速代码,Android获取网速和下载速度
  11. Unity酱~ 卡通渲染技术分析(一)
  12. View inflate方法和LayoutInflater inflate方法的区别
  13. php获取手机号码6,php随机生成姓名,手机号,6位数
  14. XCPC Team Trainning Round 1 (NCPC2018)
  15. 有关公司治理的一些收获
  16. uni-app的学习之路
  17. 申请上计算机课的申请,诺丁汉大学计算机学院课程申请通道将即将关闭,抓紧上车了...
  18. [luogu] P4735 最大异或和
  19. TabLayout 设置指示器宽度问题
  20. 意图识别各种模型比较

热门文章

  1. 花式栈溢出技巧之frame faking
  2. 深度学习中常见的损失函数(L1Loss、L2loss)
  3. 计算机pc at代表什么意思啊,PC/XT 与PC/AT的分别?
  4. Flask中 jsonify有什么作用?如何使用?
  5. Matplotlib--palette调色板
  6. python中clear和clear()
  7. 使用优启通安装最新原装纯净版Win10系统
  8. 手推遗传算法(Genetic Algorithm,GA)的详细步骤图解
  9. ORA-01779: 无法修改与非键值保存表对应的列
  10. Mac苹果电脑安装虚拟机