Dart VM - 外国浏览器(非谷歌)

标签 dart

我玩过一些 Dart,我认为它很棒。我知道它可以输出 native JS,并且谷歌可能会在他们的浏览器中支持虚拟机。由于其他浏览器供应商可能不支持 Dart VM,是否有可能在客户端计算机上安装 Dart VM 以在外国浏览器中使用?

最佳答案

is it at all possible to install the Dart VM on client machines for use in foreign browsers?



但是,自己提供 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,但它不是为常用而设计的。 Wikipedia says:

    In the Dartium Browser: The Dart SDK ships with a version of the Chromium web browser modified to include a Dart virtual machine. This browser can run Dart code directly without compilation to Javascript. It is currently not intended for general-purpose use, but rather as a development tool for Dart applications.[7] When embedding Dart code into web apps, the current recommended procedure is to load a bootstrap JavaScript file, "dart.js", which will detect the presence or absence of the Dart VM and load the corresponding Dart or compiled Javascript code, respectively,[8] therefore guaranteeing browser compatibility with or without the custom Dart VM.



    如果您希望运行 Dart 的能力依赖于客户端机器而不是页面,也有几种方法。

    一种方法是将编译器包含为用户脚本。这将适用于所有现代桌面浏览器。但是,我不确定是否存在向 Internet Explorer 添加用户脚本支持的现有方法。

    一种方法是添加浏览器扩展。所有现代桌面浏览器都支持扩展,Internet Explorer has Browser Helper Objects .

    所有这些都需要额外的 Javascript 步骤。如果你想要绕过 Javascript 的原生解释,你需要一个插件。插件需要特定的 mime 类型才能运行(不确定脚本类型是否重要),但您可以安装会触发插件使用的扩展。但是,DOM 操作仍然需要额外的 Javascript 步骤。没有其他办法了。

    桌面安装程序绝对可以将插件安装到浏览器中。实际上,这是插件通常的安装方式。从桌面安装程序安装扩展程序也是可能的,但我现在不能确认或否认最后一个说法。

    关于Dart VM - 外国浏览器(非谷歌),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14180092/

    相关文章:

    flutter - 以井号 (#) 为前缀的符号在 Dart 代码中有什么作用?

    dart - 如何使用 Dart 动态加载 HTML 并插入到我的网页中?

    flutter - 带有可扩展子控件且位于容器内的Flutter可滚动列

    list - 如何在 flutter 中渲染列表中的列表?

    file - 如何在具有源图像的 Flutter 中覆盖 Assets 图像?

    android - 为什么我在 Flutter Run 后收到此错误?

    listview - 如何在 Flutter ListView Builder 中移除或管理空间?

    android - 是否可以为 Flutter 的辅助焦点系统强制平滑隐式滚动?

    Flutter:setState() 工作,但不重新渲染

    flutter - CERTIFICATE_VERIFY_FAILED 虽然它应该是有效的?