Angular 2、4、5、6でのプラグインアーキテクチャ/プラグインシステム/プラグイン可能なフレームワークの実装
2018年5月24日更新:元の投稿から+3バージョンのAngularになりましたが、まだ実行可能な最終的なソリューションはありません。Lars Meijdam(@LarsMeijdam)は、一見の価値のある興味深いアプローチを考え出しました。(プロプライエタリな問題のため、彼は最初にサンプルを投稿したGitHubリポジトリを一時的に削除する必要がありました。ただし、コピーが必要な場合は、直接彼にメッセージを送ることができます。詳細については、以下のコメントを参照してください。) Angular 6の最近のアーキテクチャの変更により、ソリューションに近づくことができます。さらに、Angular Elements(https://angular.io/guide/elements)はいくつかのコンポーネント機能を提供します。 すばらしいAngularチームの誰かがこれに遭遇した場合、この機能に非常に興味を持っている他の多くの人々がいるように見えることに注意してください。バックログを検討する価値があるかもしれません。 私はでプラガブル(プラグイン)フレームワークを実装したいと思いAngular 2、Angular 4、Angular 5、またはAngular 6アプリケーション。 (このプラグイン可能なフレームワークを開発するための私の特定のユースケースは、ミニチュアコンテンツ管理システムを開発する必要があるということです。ここで詳しく説明されていないいくつかの理由によりAngular 2/4/5/6、そのシステムのほとんどのニーズにほぼ完全に適合します。) プラグイン可能なフレームワーク(またはプラグインアーキテクチャ)とは、具体的には、サードパーティの開発者が、プライマリアプリケーションのソースコードに直接アクセスしたり、その知識を持たなくても、プラグイン可能なコンポーネントを使用してプライマリアプリケーションの機能を作成または拡張できるシステムを意味しますまたは内部の仕組み。 (「アプリケーションのソースコードや内部の仕組みに直接アクセスしたり、その知識を持たない」という表現は、中心的な目的です。) プラグイン可能なフレームワークの例には、WordPressまたはなどの一般的なコンテンツ管理システムが含まれますDrupal。 (Drupalと同様に)理想的な状況は、これらのプラグイン可能なコンポーネント(またはプラグイン)をフォルダーに簡単に配置し、アプリケーションにそれらを自動検出または検出させ、魔法のように「機能」させることです。これをある種のホットプラグ可能な方法で、つまりアプリの実行中に行うのが最適です。 私は現在、次の5つの質問に対する回答を(あなたの助けを借りて)決定しようとしています。 実用性:Angular 2/4/5/6アプリケーションのプラグインフレームワークは実用的ですか?(これまで、を使用して真にプラグイン可能なフレームワークを作成する実用的な方法はありませんでしたAngular2/4/5/6。) 予想される課題:Angular 2/4/5/6アプリケーションのプラグインフレームワークの実装で遭遇する可能性のある課題は何ですか? 実装戦略:Angular 2/4/5/6アプリケーションのプラグインフレームワークを実装するために使用できる特定の技術または戦略は何ですか? ベストプラクティス:Angular 2/4/5/6アプリケーションのプラグインシステムを実装するためのベストプラクティスは何ですか? 代替技術: プラグインフレームワークがアプリケーションで実用的でない場合、どのような比較的同等の技術(例)が、最新の非常に反応性の高いWebアプリケーションに適しているでしょうか?Angular 2/4/5/6React 一般に、次のAngular 2/4/5/6理由により、の使用は非常に望ましいです。 当然のことながら、非常に高速です。 帯域幅をほとんど消費しません(初期ロード後) フットプリントが比較的小さい(後AOTとtree shaking)-そしてそのフットプリントは縮小し続けています それは非常に機能的であり、Angularチームとコミュニティはそのエコシステムの急速な成長を続けています それは、次のような最高の、最新のWeb技術の多くとよく果たしているTypeScriptとObservables Angular 5はサービスワーカーをサポートするようになりました(https://medium.com/@webmaxru/a-new-angular-service-worker-creating-automatic-progressive-web-apps-part-1-theory-37d7d7647cc7) によってGoogleサポートされているため、将来的にはサポートおよび拡張される可能性があります Angular 2/4/5/6現在のプロジェクトで使用したいです。を使用できる場合は、おそらく(サーバー側のレンダリングに)Angular 2/4/5/6も使用します。Angular-CLIAngular Universal 上記の質問に関するこれまでの私の考えは次のとおりです。フィードバックと啓発を確認して提供してください。 Angular 2/4/5/6アプリはパッケージを消費しますが、これは必ずしもアプリケーション内でプラグインを許可することと同じではありません。他のシステム(例Drupal:)のプラグインは、システムによって自動的に「ピックアップ」される共通モジュールディレクトリにプラグインフォルダーをドロップすることで基本的に追加できます。ではAngular 2/4/5/6、(プラグインとして)パッケージは通常を介してインストールされnpm、に追加されてから、package.json手動でアプリにインポートされapp.moduleます。これはDrupal、フォルダーをドロップしてシステムにパッケージを自動的に検出させる方法よりもはるかに複雑です。プラグインのインストールが複雑になるほど、人々がプラグインを使用する可能性は低くなります。のための方法があった場合、それははるかに良いでしょうAngular 2/4/5/6プラグインを自動的に検出してインストールします。開発者以外がAngular 2/4/5/6アプリケーションをインストールし、アプリケーションのアーキテクチャをすべて理解する必要なく、選択したプラグインをインストールできる方法を見つけることに非常に興味があります。 …