1

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

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

  • 我的项目
    • 建造
      • 组件
        • (服务于 html 的飞镖组件)
      • 控制器
        • (渡槽控制器)
      • 模型
        • (渡槽模型)
      • my_proj.dart
      • my_proj_sink.dart
    • 迁移
    • 测试
    • 网络
      • 主要.dart
      • 索引.html
4

1 回答 1

0

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

这是一个示例存储库;这些工作正在进行中,因此 Flutter 应用程序连接到 Aqueduct API,而 Angular2 应用程序还没有被触及。Flutter 也有类似的类似组件的方法。

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

在此示例中,服务器使用aqueduct serve --port 8082from运行server/,Web 应用程序使用pub servefrom运行angular2/。随着 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,我们更加专注于提供与之配合使用的工具链。(我还会看看我们的一位专注于这部分难题的团队成员是否可以在这里提出一些额外的想法。)

请随时为此提交问题,以便您可以跟踪其进度。同样,我们在Gitter dart-lang/server中有快速回答的人员。希望这可以帮助。

于 2017-06-17T01:18:55.517 回答