我玩过一些 Dart,我认为它很棒。我知道它可以输出本机 JS,并且谷歌可能会在他们的浏览器中支持虚拟机。由于其他浏览器供应商可能不支持 Dart VM,是否有可能在客户端计算机上安装 Dart VM 以在外国浏览器中使用?
2 回答
是否可以在客户端机器上安装 Dart VM 以在外国浏览器中使用?
但是,自己提供 Dart VM 会更容易。
Javascript 完全能够:
- 找到
script
一个特定的type
- 将脚本转换为 Javascript
- 执行编译好的脚本
虽然这在技术上不是 Dart 虚拟机,但它会让你的 Dart 代码全速执行。但是,您必须等待编译完成。通常的方法是在服务器上进行编译(一次),并且只将编译后的 javascript 发送给客户端。
另一种选择是解释代码。Dart 指令不是编译成 javascript,而是一个接一个地执行。Dart 不是机器级语言,所以需要解析,但接下来是解释。缺点是性能下降。这将使您尽可能接近拥有一个成熟的虚拟机(与 Javascript 分开)。
通常,你并不关心你得到的是哪个(也许你甚至会得到一个即时编译器),但它确实会在存在 Dart虚拟机方面有所不同(而不仅仅是让你的代码执行)。
Dart 编译器需要以某种方式出现在页面上(除非您进行预编译)。
最简单的方法是直接写入<script src="path/to/your/dart-compiler.js"></script>
头部。
Dartium 浏览器本身就支持 Dart,但它不是为常用而设计的。维基百科说:
在 Dartium 浏览器中:Dart SDK 附带了一个经过修改以包含 Dart 虚拟机的 Chromium Web 浏览器版本。该浏览器可以直接运行 Dart 代码,无需编译为 Javascript。它目前不打算用于通用用途,而是作为 Dart 应用程序的开发工具。 [7] 将 Dart 代码嵌入 Web 应用程序时,当前推荐的过程是加载一个引导 JavaScript 文件“dart.js”,该文件将检测 Dart VM 的存在与否,并分别加载相应的 Dart 或编译后的 Javascript 代码,[ 8] 因此保证浏览器与或不使用自定义 Dart VM 的兼容性。
如果您希望运行 Dart 的能力依赖于客户端机器而不是页面,也有几种方法。
一种方法是将编译器包含为用户脚本。这将适用于全部两种现代桌面浏览器。但是,我不确定是否存在向 Internet Explorer 添加用户脚本支持的现有方法。
一种方法是添加浏览器扩展。所有现代桌面浏览器都支持扩展,Internet Explorer 有 Browser Helper Objects。
所有这些都需要额外的 Javascript 步骤。如果你想要绕过 Javascript 的原生解释,你需要一个插件。插件需要特定的 mime 类型才能运行(不确定脚本类型是否重要),但您可以安装会触发插件使用的扩展。但是,DOM 操作仍然需要额外的 Javascript 步骤。没有其他办法了。
桌面安装程序绝对可以将插件安装到浏览器中。实际上,这是插件通常的安装方式。从桌面安装程序安装扩展程序也是可能的,但我现在不能确认或否认最后一个说法。
据我所知,没有办法简单地为 Dart 安装一个插件(如 Flash)。对于 Internet Explorer,可以安装 Chrome 框架,但我还没有看到 Firefox 和 Safari 有类似的东西。