写点什么

Dart 编译器在浏览器中编译 Dart 代码

  • 2013 年 5 月 21 日
  • 本文字数:934 字

    阅读完需:约 3 分钟

Google 重新启动了 try.dartlang.org 在线实验室,用户不需要下载并安装 Dart SDK 就能够尝试 Dart 。和前一版不同的是,新版本会在浏览器中将 Dart 代码编译成 JavaScript,这意味着它可以离线使用。此外,它还支持 dart:html ——一个用于 HTML DOM 操作的 Dart 库。无论如何,它的实现可能是 try.dartlang.org 最吸引人的一个方面。

Peter von der Ahé 在 Google+ 上宣布了该版本的发布:

我们已经恢复了 try.dartlang.org 。与旧版本相比,新版本具有浏览器内的编译功能、支持 dart:html,并且能够离线使用。

如果你拥有一个 iOS 设备,那么可以安装 Try Dart 作为主屏幕上的一个应用

虽然有很多针对大多数语言的实验环境可以使用——例如 try ruby 或者 repl.it ,它们都为很多语言提供了 REPL(读取、求值、打印、循环)支持,包括 Python、JavaScript 以及 Lua 等很多其他的语言——但是,这些实验网站大部分会将用户的输入发送到服务器,然后在服务器端执行代码,最后将结果发送回客户端。与这些网站不同的是,Try.dartlang.org 会在浏览器中 _ 编译 _ 并 _ 执行 _ 代码。

那么这是如何完成的呢?Dart 团队是如何做到在浏览器中将 Dart 托管给 JavaScript 编译器(称为 dart2js)的。看看 try.dartlang.org 项目的源码库就能找到这个问题的答案。

Dart2js 编译器自身就是使用Dart 编写的。通常,它会使用SDK 中包含的DartVM 运行。但是,为了实现try.dartlang.org,Dart 团队调用了dart2js 编译器本身,因而产生了一个能够在单独的457KB 大小的JavaScript 文件中将Dart 代码翻译成JavaScript 代码的编译器。浏览器会载入这个JavaScript 版本的编译器,在每次编辑器中的Dart 代码发生变化时都会调用它。然后便会执行翻译后的JavaScript 代码,并显示出结果。

虽然在浏览器中运行dart2js 编译器并不是一个使用Dart 构建Web 应用程序的典型示例,但是以这种方式引导的dart2js 编译器却是一个令人印象深刻的技术杰作。

Try.dartlang.org 中有很多预先包装好的示例应用程序,你能够很容易地运行并调整它们从而更好地理解该语言的工作原理。示例的复杂性范围非常广,从简单的 hello world 应用程序开始到 Delta Blue 基准测试都有。

查看英文原文 Dart-Compiled Dart Compiler Compiles Dart Code in Browser

2013 年 5 月 21 日 10:032113
用户头像

发布了 321 篇内容, 共 107.7 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

聊聊微服务

炜娓道来程序人生

架构 微服务 SOA

【Elasticsearch 技术分享】—— ES 查询检索数据的过程,是什么样子的?

程序员小航

Java elasticsearch 搜索 ES Lucene Elastic Search

Android |《看完不忘系列》之dagger

哈利迪

android

Redis系列(二):Redis的5种数据结构及其常用命令

简爱W

为什么中国出了这么多厉害的互联网公司,但没有自己设计过编程语言?

代码制造者

编程语言 低代码 企业信息化 零代码 编程开发

《搞定1》读书笔记

超超不会飞

前端智能化的加速时刻:华为机器视觉的创新方程式

脑极体

甲方日常2

句子

工作 随笔杂谈 日常

面试官再问你Http请求过程,怼回去!

架构师修行之路

HTTP TCP/IP

使用 K8s 进行作业调度实战分享

后端进阶

学习 Kubernetes 容器 k8s 调度式分布

Docker 镜像构建之 Dockerfile

哈喽沃德先生

Docker 容器 微服务

温故知新——Spring AOP

牛初九

spring aop ioc

背景自由替换,远程办公好助手

华宇法律科技

易观方舟Argo+CRM | 让企业数据发挥更大价值

易观大数据

区块链是一个有去无返的奇幻旅程

CECBC

区块链

迎接物联网时代,区块链大有可为

CECBC

云计算 大数据 区块链技术

第11周总结+作业

林毋梦

Java | 你知道快速搭建一个spring boot项目该怎么做吗?

简爱W

零代码简史

明道云

SaaS

XSKY星辰天合助力中国五矿打造政企办公新标杆

XSKY融合存储

OPPO互联网DevSecOps实践

OPPO安全

DevOps 安全

Apache Pulsar 2.6.1 版本正式发布:2.6.0 功能增强版,新增 OAuth2 支持

Apache Pulsar

消息队列 Apache Pulsar 消息系统 消息中间件

有选择才会有困惑

escray

学习 面试

Flink-键值分区状态-10

小知识点

scala 大数据 flink

Luajit字节码分析之KSTR

whosemario

lua

合约跟单交易系统开发,交易所一键跟单模式搭建

13530558032

解决数据指数级增长挑战,英特尔如何又快又好提供领导力产品?

最新动态

科普小知识:区块链与分布式系统

CECBC

区块链 分布式

月度工作汇报,为什么要全球直播?

赵新龙

TGO鲲鹏会 技术社区 开源社区

Redis系列(一):Redis简介及环境安装

简爱W

Woman、man、camera、TV:如何做一个完整的深度学习应用

LeanCloud

学习 程序员 互联网 容器 LeanCloud

React Native 核心原理及跨端选型思路

React Native 核心原理及跨端选型思路

Dart编译器在浏览器中编译Dart代码-InfoQ