1

我尝试了很多技术,但对于我的一生,我无法让它发挥作用。给我最大希望但仍然无效的技术如下:

--我注意到对“build”方法(在 build.dart 中)的调用返回了一个 Future,所以我假设如果我要简单地实现该 Future 的 .then () 方法,我可以确信我的代码将在整个构建过程完成并且所有文件都已正确放置在我的 web\out 目录结构中后执行。在我的“then”代码中,我将 web/out 中的所有内容进行了简单的递归复制到我的目标目录。现在,由于 abc.html 中发生的一些链接更改(作为 build () 方法的结果),我不得不将 web/out 目录结构复制到几个不同的位置,在我的最终厌恶中,但是我暂时不关心这个。真正的问题是,当我更改(例如)我的 abc.css 文件并保存它时,我想出了我的构建。

2)在我上面#1的冒险过程中,我想我会尝试做一个“干净的构建”,认为这将确保我总是将所有最新的文件复制到我的最终目的地,但这并没有也不行。

我的主要目标是让我的应用程序快速复制到 JBoss 中已部署的 WAR 目录中,这样我就可以快速测试我的 REST 调用,而不是依赖运行在端口 3030 上的调试服务器。

想法?

4

2 回答 2

1

首先,了解这里起作用的组件很重要。(如果你还不知道的话。)

根目录中的build.dart映射到编辑器的功能。当它被调用并且传递给它的参数都在编辑器的世界中。我已经从这个文件中使用了一些登录,只是为了看看它什么时候被调用,等等。如果你写入一个文件来写入你的项目之外的一个文件,请小心,否则日志更新将启动另一个构建并且它'永远不会结束。

对build的调用(包含在 package:web_ui/component_build 中)都是关于 WebUi 编译器的。这存在于它自己的世界中,并且只是对从 build.dart 传入的参数进行聚会。在 build.dart 之外自己尝试一下这段代码可能是值得的,只是为了看看它是如何工作的。

https://github.com/dart-lang/web-ui/blob/master/lib/component_build.dart#L35

如果您想要一个经过调整的 build.dart 文件的示例,您可以查看 Widgets。https://github.com/kevmoo/widget.dart/blob/master/build.dart

我在这里做了很多随机清理。不确定它是否会很有帮助,但它会给你一些想法。

至于复制内容和准备部署,我使用Hop。这是小部件的 hop_runner

https://github.com/kevmoo/widget.dart/blob/master/tool/hop_runner.dart

我将复制步骤分解为自己的任务。这个任务目前只运行一个 shell 脚本,尽管有些人正在制作一个纯 Dart 版本。

我们很乐意帮助。

于 2013-05-07T15:56:18.593 回答
1

回答您的具体“我怎么知道 Web UI 构建过程何时完成?” 问题,尝试这样的事情:

import 'package:web_ui/component_build.dart';
import 'dart:io';
import 'dart:async';

void main() {
  var args = new List.from(new Options().arguments);
  args.addAll(['--', '--no-rewrite-urls']);

  Future dwc = build(args, ['web/clock_page.html', 'web/HelloWorld.html']);

  dwc
    .then((_) => Process.run('cp', ['packages/browser/dart.js', 'web/out/dart.js']))
    .then((_) => Process.run('cp', ['App.css', 'out']));
}

请注意build()函数如何返回 Future,您可以注册函数以在 Future 完成后运行。

于 2013-05-08T04:05:13.000 回答