2017-06-16 11 views
1

私は既存のダートプロジェクトと水路管理サーバーをリンクしようとしています。私はaqueducts HTTPFileControllerと静的なファイルを提供する方法を認識していますが、私はaqueductフレームワークでダーツで書かれたクライアント側の完全なWebアプリケーションを統合する最良の方法についての洞察を求めていました。私。ユーザーのリストなどを返すコンポーネントからAPIメソッド呼び出しを作成します。 RPCパッケージはこのようなものを提供しますが、より堅牢でより多くの機能を提供するので、私は水道を使用したいと思います。Aqueductサーバーと既存のクライアントベースのDart Webアプリケーションを統合する最適な方法は何ですか?

現在、私のプロジェクト全体の構造は次のようになっています。

  • my_proj
    • ビルド
    • libに
      • コンポーネント
        • (DART成分サービングHTML)
      • コントローラ
        • (水道コントローラ)
      • モデル
        • (水道モデル)
      • my_proj.dart
      • my_proj_sink.dart
    • 移行
    • 試験
    • ウェブ
      • main.dart
      • index.htmlを

答えて

0

それは別々のプロジェクトを維持することをお勧めします。このようにして、両方のプラットフォームで別々の依存関係の制約を設定することができます。これにより、アプリケーションの拡張に伴って有意義なものになります。これにより、展開の柔軟性が最大限に高まります。

Here's an example repository;これらは進行中であるため、FlutterアプリケーションはAqueduct APIに接続され、Angular2アプリケーションは変更されていません。 Flutterは同様の部品のようなアプローチをしています。

sharedディレクトリは、あなたに最も興味深いものです。このディレクトリには、APIを呼び出すためのモデルとサービスがあります。 FlutterとAngular2の両方のアプリは、それを依存関係として使います。

この例では、サーバーはserver/からaqueduct serve --port 8082で実行され、Webアプリケーションはpub serveからangular2/で実行されます。ダーツのエコシステムはDDCのように進化しているので、そのようなツールチェーン内で動作するこのような開発/展開パターンを採用することで最も効果的です。

Aqueductから生成されたHTML/CSS/JSファイルを提供する予定の場合は、HTTPFileControllerにAngular2プロジェクトの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に素早く答える人々を持っています。お役に立てれば。

関連する問題