2016-06-13 8 views
2

私はElectronまたはCLIを使って2つの異なる方法で実行できるAngular2アプリケーションを構築しようとしています。ブラウザの外でAngular2を使用する

基本的に、アプリケーションの基本コンポーネントは一連のサービスです。アプリケーションの電子版では、これらのサービスは一連の対話型コンポーネントを介して公開されますが、CLIバージョンではノードを使用してアクセスできます。

  1. は、他のプラットフォームの角のサポートを行います。これが可能であると2つの質問が生じていることを確認しようとしている - 現時点で

    は、私が研究/のPoCフェーズにいますか?ブートストラップ方法はブラウザにのみ適用されるようです。

  2. Angular2は、コンポーネント/アプリケーションレベルで定義されていない(つまり、サービスにインジェクタがない)場合を除き、サービス内でのサービスの注入をサポートしていないようです。私は、アプリケーションレベルで私のすべてのサービスに対する私の依存関係をすべて追加したくはありません。実際、これは非シングルトンを必要とするため、これは機能しません。誰かがこのための回避策を開発しましたか?

おそらく、Angular2はこれには適していません。

答えて

1
  1. "他のプラットフォーム"とはどういう意味ですか? Angular2は、ブラウザ用のWebフレームワークです。 Electronはブラウザを使用しているため、そこで使用することができます。 IonicにはAngularからネイティブ表現への変換レイヤーがあります。

角度は、他のプラットフォームでも使用できるように拡張できます。

  1. Angular2は、サービスへのサービスの注入をサポートしています。サービスレベルでプロバイダを宣言することはサポートしていません。これは、bootstrap()とコンポーネントまたはディレクティブでのみサポートされています。

私はあなたが必要なプロバイダが含まれているあなたのモジュールに配列変数を作成することができ、アプリケーションレベルでの私のすべてのサービスのために

をすべての私の依存関係を追加することに熱心ではないと思います。あるモジュールが複数のモジュールのプロバイダを必要とする場合、そのモジュールはそのような変数を含む変数を他のモジュールからエクスポートすることができます。プロバイダは任意にネストすることができます。そのような最上位の変数を1つ以上エクスポートして、bootstrap()またはルートコンポーネント、またはプロバイダのスコープを定義する別のコンポーネントに追加できます。

実際、これは非シングルトンを必要とするため実際には機能しません。誰かがこのための回避策を開発しましたか?

前者は非シングルトンとは関係ありません。必要な非シングルトンの種類に応じて、さまざまな方法があります。

プロバイダにコンポーネントを追加する場合、このコンポーネントは単一のインスタンスが維持されるスコープのルートです。このコンポーネントとそのすべての子(同じプロバイダが登録されていない場合)は、すべての要求に対してこのプロバイダが保持する単一のインスタンスを取得します。

プロバイダをファクトリ関数として登録する場合は、ファクトリ関数の呼び出しごとにファクトリを挿入して新しいインスタンスを取得できます。

+0

グラフィカルGUIなしでAngular CLIアプリケーションを実際に構築したいのですか? AngularはGUI(https://github.com/angular/universal)なしで動くことができるように作られていますが、それは特定の目的(SEOと読み込み後のより速い最初のビュー)のみです。基本的には、カスタムレンダラをノード上で実行し、ブラウザの代わりに代わりの入出力を使用できるようにする必要があります。 –

+0

ありがとうございましたGünter - あなたは時間を費やしていただきありがとうございます。 「他のプラットフォーム」では、ブラウザではなくコマンドラインインターフェイス(ノード)を意味していました。したがって、私は、HTML表現がないため、コンポーネントを使用できないと考えています。代わりに、コンポーネント(電子)またはCLIを介してトリガされるサービス(標準JSクラス)を作成すると考えました。私はクラスの非シングルトンバージョンを作成するために工場を使用するあなたのアプローチが好きですが、理想的な世界では、私はサービスのプロバイダを指定することができます - 私にとっては間違いなく限界のように感じます。 – user2294382

+0

実際にはコンポーネントを使用できますが、前述したようにカスタムレンダラーが必要です。サービス上でプロバイダを指定できないことは制限です。他にもいくつかあります。 Angular2は前身との類似点がほとんどなく、Angular2はまだプレリリースされている複雑な新しいフレームワークだと考えてください。これは、優先順位の高い機能がアイロンをかけられたときに、改良が行われることを意味します。 –

関連する問題