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

时间:2017-06-16 14:31:11

标签: dart aqueduct

我正在尝试将渡槽服务器与我现有的飞镖项目联系起来。我知道aqueducts HTTPFileController以及如何提供静态文件,但我一直在寻找有关将dart编写的完整客户端Web应用程序与aqueduct框架集成的最佳方法的见解。即从组件进行API方法调用,即返回用户列表或类似的东西。 RPC包提供了这样的东西,但我想使用渡槽,因为它更强大,并提供更多的功能。

目前我的整体项目结构如下:任何建议都表示赞赏!

  • my_proj
    • 构建
    • LIB
      • 部件
        • (服务html的dart组件)
      • 控制器
        • (渡槽控制器)
      • 模型
        • (渡槽模型)
      • my_proj.dart
      • my_proj_sink.dart
    • 迁移
    • 测试
    • 网络
      • main.dart
      • 的index.html

1 个答案:

答案 0 :(得分:0)

将项目分开是一个好主意。这样,您可以为两个平台分别设置依赖关系约束,随着应用程序的增长,这些约束最终会变得有意义。它也将为您提供最大的部署灵活性。

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

shared目录对您来说最有趣 - 它具有用于调用API的模型和服务。 Flutter和Angular2应用程序都将它用作依赖项。

在此示例中,服务器使用aqueduct serve --port 8082中的server/运行,并且pub serve使用angular2/运行Web应用程序。随着Dart生态系统与DDC之类的东西一起发展,您可能会通过采用这样的工具链中的开发/部署模式来获得最佳服务。

如果您计划从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,以便跟踪其进度。同样,我们有Gitter dart-lang/server的人快速回答。希望这会有所帮助。