AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

Scala.js:将 Scala 编译为 JavaScript 的编译器

  • 2015-03-24
  • 本文字数:817 字

    阅读完需:约 3 分钟

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 已形成了一个良好的生态圈,生态圈内容包括:

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


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-24 08:294432
用户头像

发布了 46 篇内容, 共 54.2 次阅读, 收获喜欢 15 次。

关注

评论

发布
暂无评论
  • Vue 模板是怎样编译的

    这一章我们开始讲模板解析编译:总结来说就是通过compile函数把tamplate解析成render Function形式的字符串compiler/index.js

    2022-11-10

  • js 进阶手写常见函数

    无论是学习react还是vue,它们都是js的应用框架。剥去他们的壳子看到的始终是js,所以作为一个前端大厨必须要熟练掌握好js这个大勺,才能烧出一顿好菜

    2022-10-03

  • js 进阶手写常见函数

    无论是学习react还是vue,它们都是js的应用框架。剥去他们的壳子看到的始终是js,所以作为一个前端大厨必须要熟练掌握好js这个大勺,才能烧出一顿好菜

    2022-10-31

  • 上手 JavaScript 基准测试

    大家好,我是小鑫同学。一位从事过 Android 开发、混合开发,现在长期从事前端开发的编程爱好者,我觉得在编程之路上最重要的是知识的分享,所谓三人行必有我师。所以我开始在社区持续输出我所了解到、学习到、工作中遇到的各种编程知识,欢迎有想法、有同感

    2022-10-13

  • 开篇词|React Web 开发这样学,才能独当一面!

    学习一门技术,务必要有大于一门技术的收获,这也是我开设这个专栏的初衷。

    2022-08-22

  • 30|JavaScript 引擎:双向通讯底层原理是什么?

    双向通讯底层原理是什么?

    2022-11-01

  • Vue 模板是怎样编译的

    这一章我们开始讲模板解析编译:总结来说就是通过compile函数把tamplate解析成render Function形式的字符串compiler/index.js

    2023-02-24

  • 29|弄清现状:新架构预览版究竟长什么样?

    今天我们的目标就是承接上一节课讲过的方法,画一张新架构的“鸟瞰图”,看看当前0.70 版本的新架构预览版究竟是怎么设计的。

    2022-10-01

  • 32|Fabric:新渲染器的演进之路

    对核心渲染流程的持续迭代和优化,是 React Native 能够广受欢迎的重要原因之一。

    2023-01-01

  • JavaScript 刷 LeetCode 拿 offer-js 版字典

    与集合类似,字典也是一种存储唯一值的数据结构,但它是以键值对的形式来存储。

    2022-11-15

  • 开篇词 | JavaScript 的进阶之路

    这门课的初衷,就是让学习JavaScript的你,能够对这个开始比较不那么“专业”的语言,有一个系统的专业理解。帮助你一步一个脚印,把点连成线,把线连成面,把面搭建起一座空间立体的“思维大厦”。

    2022-09-19

  • 28|追本溯源:从第一版 React Native 开始学会读懂源码

    今天,我们以第一版React Native源码为例,教你如何通过读源码,一步一步理解React Native新架构。

    2022-09-01

  • JS 事件,你真的懂吗(捕获,冒泡)?

    说到js事件大家肯定都知道,那么今天讲一点大家不知道的(假设大家不知道🐶)。所有的js事件都会分为两个阶段捕获和冒泡。那么问题来了,我们通常看到的事件都是直接触发之后就执行了,那么我们怎么才能看到事件的捕获和冒泡都是怎么进行的呢,这里给大家准备

    2022-10-22

  • JS 事件,你真的懂吗(捕获,冒泡)?

    所有的js事件都会分为两个阶段捕获和冒泡。那么问题来了,我们通常看到的事件都是直接触发之后就执行了,那么我们怎么才能看到事件的捕获和冒泡都是怎么进行的呢

    2022-10-28

  • js 异步编程面试题你能答上来几道

    在上一节中我们了解了常见的es6语法的一些知识点。这一章节我们将会学习异步编程这一块内容,鉴于异步编程是js中至关重要的内容,所以我们将会用三个章节来学习异步编程涉及到的重点和难点,同时这一块内容也是面试常考范围。

    2022-11-04

  • 中台 + 低代码 企业数字化转型新范式

    中台是一个从2016年到现在都一直很火的词,之所以从提出到现在持续这么久而热度不减,究其原因其实是企业在当下数字化经济时代的核心诉求发生了变化。

    2022-12-12

  • js 异步编程面试题你能答上来几道

    在上一节中我们了解了常见的es6语法的一些知识点。这一章节我们将会学习异步编程这一块内容,鉴于异步编程是js中至关重要的内容,所以我们将会用三个章节来学习异步编程涉及到的重点和难点,同时这一块内容也是面试常考范围。

    2022-12-16

  • 浓缩即精华!腾讯云大神亲码“redis 深度笔记”,堪称面试宝典!

    作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。

    2022-09-20

  • js 异步编程面试题你能答上来几道

    在上一节中我们了解了常见的es6语法的一些知识点。这一章节我们将会学习异步编程这一块内容,鉴于异步编程是js中至关重要的内容,所以我们将会用三个章节来学习异步编程涉及到的重点和难点,同时这一块内容也是面试常考范围。

    2022-10-19

发现更多内容

C# 世界的《Effective C++》,来自.Net之父的核心揭秘

博文视点Broadview

面对ChatGPT,中国AI可以不疾不徐不焦虑

脑极体

AI

历史性的时刻!OpenTiny 跨端、跨框架组件库正式升级 TypeScript,10 万行代码重获新生!

Kagol

typescript 开源 Vue 3 Vue3 Typescript OpenTiny

Selenium Grid作用是什么?Selenium Grid的使用过程?

测吧(北京)科技有限公司

测试

释放Go Mutex的威力:编写线程安全代码的技巧和诀窍

Jack

Service初涉

芯动大师

android service

浅谈Data Driven Testing

QE_LAB

测试 数据驱动测试

Redis事务

京茶吉鹿

nosql redis

产品愿景设计:解锁团队潜能,引领市场竞争优势

L3C老司机

产品设计 数字化转型 设计思维 产品设计与思考 产品愿景

IT采购,不再默默扛下“背刺”

白洞计划

AI 联想

三次迭代终放“大招”,Themis Pro版即将问世

BlockChain先知

有关提升代码质量的思考

阿呆

小程序SDK的发展趋势与未来展望

FinFish

小程序 APP开发 小程序容器 超级app

使用 Lambda Web Adapter 在 Lambda 上 构建 web 应用

亚马逊云科技 (Amazon Web Services)

Amazon

IotLink版本更新V1.10.0

山东云则信息科技

集成技术,大山里的金子

阿呆

使用NSIS打包超大型软件的几个注意事项

大伟

AI自然语言处理的过去和未来

鲸品堂

自然语言处理 ChatGPT 企业号 4 月 PK 榜

HTTP与HTTPS的区别

测吧(北京)科技有限公司

测试

模块八作业 - 消息队列存储消息数据的 MySQL 表格

🐢先生

架构实战营

Themis Pro版将正式推出,3次迭代到底在酝酿什么?

股市老人

Flutter和小程序容器技术的应用前景与发展潜力

FinFish

flutter 小程序容器 小程序技术

新思科技:车联网产业的起点是安全

InfoQ_434670063458

车联网 新思科技 汽车安全

Flutter 使用 CustomPaint 绘制基本图形

岛上码农

flutter ios 安卓 移动端开发 跨平台开发

Themis Pro版将正式推出,3次迭代到底在酝酿什么?

鳄鱼视界

Flutter 异步编程指南

京东科技开发者

flutter dart 异步任务编程 APP开发 企业号 4 月 PK 榜

博睿数据中海油多云资源监控与治理案例荣膺云数大会年度优秀实践案例

博睿数据

可观测性 智能运维 博睿数据 精选案例

OceanBase入选啦!金融信创优秀解决方案(第二期)

OceanBase 数据库

数据库 oceanbase

Scala.js:将Scala编译为JavaScript的编译器_JavaScript_李小兵_InfoQ精选文章