2016-01-04 12 views
7

私の質問は、プロジェクトでフロントとバックを一緒に整理する方法です。 は、私の知る限りでは、ウェブのjarファイルの依存関係とSBTのプラグインを使用してそのようなことplay frameworkとangular2を組み合わせるにはどうすればいいですか?

  1. グループフロントと一つのプロジェクトでバックを行うには、2つの方法があります。だから、SBTは、前面と背面を分離し、それらを別々に展開
  2. ... uglifyconcatcompilationjavascripttypescript)のように、すべての必要な操作を実行します。この場合、バックエンドはヘッダAccess-Control-Allow-Originを追加する必要があります。このようにして、前面と背面を2つの異なるホストに配置することができます。使用するツールはnpmとgulp/gruntになります
  3. 1と2を混ぜて使用します。正面と背面に同じリポジトリを使用しますが、正面はnpm、bower、gulp/grunt

当面は、オプション2と3のドキュメントがあまりありません。また、typescriptプラグインはまだ準備ができていません。

どのようにスカラプレイ+ angular2の開発に適していますか?

+2

私の当選者はノーです。 1 - マルチドメインのスタックやアプリケーションを分離したい場合でも、リバースプロキシ/マルチドメイン/ロードバランスのための軽いHTTPサーバーのようないくつかのソリューションを使用することができます。あなたの質問は意見に基づいているので、私の答えは意見だけかもしれません:) – biesior

+1

ありがとうございますが、あなたは角2とタイプスクリプトでそれを行うためのチュートリアルを知っていますか?私はgithubに関するいくつかのプロジェクトを見たが、今のところ未熟だと思う。 – nam

+2

@biesiorが言及したように、私は1つの理由として、2つのアプリケーションに分割したくないと主張している。 Playはそのジャズをすべて処理しますが、CORS設定を構成する必要がないという利点もあります。私もやったこと:私はwebjarsを使用せず、bower/npmは/ publicフォルダにあります。私はangleのエントリーポイントを定義しています。例えば、 '/ welcome'はそこからangleがルーティングを取ります。あなたはこの[質問](http://stackoverflow.com/questions/16085544/play-framework-2-1-angularjs-routing-best-solution)を見てみたいかもしれません –

答えて

9

私は最近いくつかのAngular and Angular 2アプリを使っていて、同様の問題を扱っています。すべてのシナリオで、私たちのバックエンドとフロントエンドのアプリケーションはコードの点で分離されていて、RESTインターフェイスを介してのみ通信していました。それでも、フロントエンドとバックエンドの両方の部分を提供しています。両方とも(Play FrameworkでもTomcatでも可能な)1つのホスティングサーバーを使用するのは当然です。

オプション#1 当初、私たちはこれを選択しました。 Webjarsは奇跡のように見え、いくつかのsbtまたはmavenプラグインは、フロントエンドプロジェクトの縮小、コンパイル、リンピングなどを手助けすることができます。 これはいくつかのためにうまくいくかもしれません。残念ながら、私はこのワークフローが不自然であることを発見しました。プラグインの中には欠けているものや、設定が難しいものがありました。 Webjarsは常に最新のものではなく、自動的に利用可能なものもあれば、そうでないものもあります。単純なプロジェクトではうまくいくかもしれませんが、私にとっては十分ではありませんでした。

オプション#2 私たちは開発用に別々のサーバーを試しましたが、速く終了しました。ほとんどのアクションでは、フロントエンドサーバーとバックエンドサーバーの両方が必要です。だから両方を始める必要があります。これは、他のユーザーを覚えて教えるために2倍以上のコマンドやワークフローがあることを意味します。 CORSは大きな問題ではありませんが、プロダクション用に無効にすることを検討することもできます。これはプロジェクトで余分な作業を意味します。バックエンドやフロントエンドを別々に開発することは、このように高速でしたが、私の意見では、両方を提供する場合は、開発プロセスが役立つはずです。

オプション#3 これは私たちが使用しているものです。 sbtでそれは可能で便利です。 SbtWebプラグインを使用すると、playRunHooksにプロジェクトで実行するアクションを設定できます。 RunSubProcessがhere見つけることができます

playRunHooks += { 
    Process(Seq("npm", "install"), file(portal)).lines.foreach(println) 
    RunSubProcess(portal, "npm", "run", "watch") 
} 

:アイデアは、すべての必要な、フロントエンドの仕事をするためのツール、FEを構築JavaScriptを実行することです。

だから、長い話を短くカット、あなたは、静的なコンテンツを提供するが、その変化を無視するようにサーバーを再生してみましょう。これはnpm,gulp,webpack,gruntのいずれかを選択して処理します。 JavaScriptビルドツール、プラグイン、テンプレートが豊富に用意されています。 sbtプラグインは必要ありません.JavaScriptの世界がその仕事をすることを許可するだけです。最初に設定するのは難しいかもしれませんが、すぐに払います。

サンプルプロジェクトとして、アクティベータテンプレートPlay Framework with Angular 2 and Webpack 2をチェックアウトすることができ、プロジェクトはGitHub:play-ng2-webpack2でホストされています。それは私を少し助けました。

xsbt-web-pluginとdevelopmentModeでTomcatを使用することもできます。哲学は似ています。

あなたがあなたの方法を見つけることを望む:)。

+0

オプション#3をsbtプラグインとしてリリースする予定はありますか? –

関連する問題