【问题标题】:dart2js compiling without IDEdart2js 在没有 IDE 的情况下编译
【发布时间】:2015-03-12 01:19:17
【问题描述】:

我正在使用 dart2js 在我的 Ubuntu 服务器上将 dart 编译为 JavaScript。

我可以使用像print() 这样的简单命令,但我似乎无法使用 DOM。 下面的代码返回null

除了包含已编译的out.js 之外,我还需要其他什么来使导入工作吗?

import 'dart:html';

void main() {
    print(document.querySelector('body'));
}

HTML:

<!DOCTYPE HTML>
<html>
<head>
    <link rel="stylesheet" href="/css/f4cacce_main_1.css" />
    <script src="/js/51de0d2_main_1.js"></script>
</head>
<body>
</body>
</html>

【问题讨论】:

    标签: dart dart-html dart-pub


    【解决方案1】:

    如果您手动导入out.js,则问题可能出在您的 HTML 文件中。请将其添加到您的问题中。

    您应该使用pub build 而不是dart2jspub build 在内部使用dart2js)。 pub build 负责为生成的 JavaScript 添加脚本标签。

    编辑

    在运行pub build之前,您的 HTML 应该如下所示

    <!DOCTYPE HTML>
    <html>
    <head>
      <link rel="stylesheet" href="/css/f4cacce_main_1.css" />
    </head>
    <body>
      <script type="application/dart" src="main1.dart"></script>
      <script src="packages/browser/dart.js"></script>
    </body>
    </html>
    

    (假设 main1.dart 是包含您的 Dart 代码的文件)。

    您可以在 Dartium 中打开它,而无需构建到 JavaScript。
    您也可以使用 pub serve 提供此服务,然后从 Dartium 或不支持 Dart 的浏览器打开它,pub serve 始终返回正确的输出(Dart 或 JS)

    【讨论】:

    • 使用 HTML 编辑问题。
    • 这段代码将从服务器运行,所以没有显示意味着没有 Dartium。另外它会被其他人使用,所以我需要将我的代码编译成javascript。
    • “此代码将从服务器运行”是什么意思?浏览器从服务器加载代码并执行它?这就是 Dart 客户端应用程序通常使用的方式。 pub build 确实将其编译为 JavaScript。您所说的“将用于他人使用”是什么意思?其他 Dart 或 JavaScript 应用程序是否应该加载构建的 JavaScript(从您的代码构建)?
    • 对,但主要思想是我必须在服务器上编译它。我将在日常浏览器中使用这个程序,所以我不能使用你上面描述的方法
    • “我的想法是我必须在服务器上编译它”是什么意思? pub serve 只是一个开发工具,所以你不需要在开发过程中调用pub build(它是即时完成的)。通常在将 Dart 代码提供给客户端之前,您需要将其编译为 JavaScript。这就是pub build 所做的。
    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多