将 Aqueduct 服务器与现有的基于客户端的 Dart webapp 集成的最佳方法是什么?

What is the best way to integrate Aqueduct server with an existing client based Dart webapp?

我正在尝试 link 一个 aqueduct 服务器与我现有的 dart 项目。我知道 aqueducts HTTPFileController 以及如何提供静态文件,但我一直在寻找将用 dart 编写的完整客户端 Web 应用程序与 aqueduct 框架集成的最佳方法。 IE。从组件进行 API 方法调用,说 return 用户列表或类似的东西。 RPC 包提供了类似的东西,但我想使用 aqueduct,因为它更健壮并提供更多功能。

目前我的整体项目结构如下:欢迎任何建议!

将项目分开是个好主意。通过这种方式,您可以为两个平台设置单独的依赖性约束,随着应用程序的增长,这最终将变得有意义。它还将为您提供最大的部署灵活性。

Here's an example repository;这些工作正在进行中,因此 Flutter 应用程序已连接到 Aqueduct API,而 Angular2 应用程序尚未触及。 Flutter 有类似的类似组件的方法。

您最感兴趣的是 shared 目录 - 它具有调用 API 的模型和服务。 Flutter 和 Angular2 应用程序都将其用作依赖项。

在此示例中,服务器是 运行,aqueduct serve --port 8082 来自 server/,Web 应用程序是 运行,来自 angular2/ pub serve ].随着 Dart 生态系统随着 DDC 之类的东西而发展,您可能最好采用像这样在该工具链中工作的 development/deploy 模式。

如果您计划从 Aqueduct 提供生成的 HTML/CSS/JS 文件,一个好主意是在您的 Angular2 项目中有一个 HTTPFileController 引用 build/web 文件夹。因此,您的文件夹结构可能如下:

  project/
    server/
      pubspec.yaml
      lib/
        sink.dart
        controllers/
        model/
    client/
      pubspec.yaml
      lib/
      web/

你的路由连接如下所示:

router
  .route("/*")
  .pipe(new HTTPFileController("../client/build/web"));

另一种方法是使用构建脚本将文件写入服务器目录内的目录;这可能对部署有用。

Aqueduct 团队目前正在为此寻找不同的选择和构建工具。随着最近发布的 DDC,我们更加专注于提供与之配合使用的工具链。 (我还会看看我们专注于这部分难题的团队成员是否可以在这里提出一些额外的想法。)

请随时file an issue for this as well so you can track its progress. Likewise, we have folks in Gitter dart-lang/server快速回答。希望这有帮助。