問題タブ [modular-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
125 参照

javascript - 依存性注入をモジュール内依存性に制限する

tl;dr:

モジュール内にのみ存在するコンポーネントへのAngular JS依存性注入を制限/リントする方法はありますか?

明らかにスパゲッティ コードである Angular JS コード ベースを継承しました。さらに、アプリは巨大ですが、ほとんどのアプリ機能は 3 つまたは 4 つのモジュール間で共有されます。

Angular はモジュール レベルで名前空間を制限しないため、チームは実質的にモジュールの境界を無視しています。これ自体は問題ではありません (Angular では許容されます)。問題は、アプリケーションの構造が初歩的であり、コンポーネントが再利用可能であることはめったになく、拡張が難しく、モジュールの置き換えについても考えないことです。

現在、お客様から、いくつかのモジュールを簡単に置き換えることができるようにアプリを拡張するように求められており、ソリューションを開発する必要があります。

私は戦略について疑問に思っており、基本的にファサードパターンインターフェースパターンを実装するモジュール間インターフェースを導入することにより、アプリをリファクタリングするという考えを持っていました.

言い換えれば、モジュールの実装を外の世界から隠して、モジュールがデータの行き来を知らないようにするサービスが必要です。同時に、インターフェイス パターンを使用して、モジュールに渡されるデータが特定の期待を満たしていることを確認したいと考えています。

移行プロセスを簡単にし、誰もがルールを遵守できるようにしたいと考えています。Angular には、依存性注入のルールを強制する方法がなく、eslint の angular プラグインには、これらの線に沿ったものは何も含まれていません。誰もこれを試しましたか?私はグーグルで検索しましたが、何も見つかりませんでした。

0 投票する
0 に答える
65 参照

java - Java の汎用性とサービス

私のアプリケーションは ServiceLoader を使用しており、Algorithm と Exporter の 2 種類のサービスがあります。コード :

アルゴとエクスポーターを一緒に「配線」する別のクラス Executor があります。

チーム メンバーは、さまざまな種類のアルゴリズムとエクスポーターを個別にコーディングします。彼らはそれをjarに入れ、アルゴリズムまたはエクスポーターのいずれかであるサービスプロバイダーを登録し、アプリケーションのコアはこれらのモジュールを組み合わせることにあります.

私はその小さなテストを書きました:

しかし、私は前途に問題を予見しています。ローダーはアルゴリズムまたはエクスポーターの特定のタイプを認識していないため、2 つの組み合わせが互換性があることをどのように確認できますか? または、アルゴ/エクスポートが機能するタイプに応じて、サービスローダーでサービスをフィルタリングする方法はありますか? ありがとうございます

編集:より明確にするために:誰かがモジュールアルゴリズムをコーディングし、他の人がエクスポーターをコーディングするとしましょう。それらは ServiceLoader で同じ方法でロードされます。それらを区別する方法はありますか?

0 投票する
0 に答える
346 参照

java - フロントエンドとバックエンドが分離された angularJS アプリのサイトマップ生成

フロントエンドとバックエンドが別々のアプリケーションがあります。フロントエンドは angularJS で、バックエンドは Java で作成されています。

私のアプリケーションは動的データを頻繁に生成しており、アプリに SEO を導入したいと考えています。そのために、サイトマップを作成したいと考えています。

私の angularJS アプリは単一ページのアプリケーションであるためです。新しいページ/データが追加されるとすぐに更新される動的サイトマップを作成する方法の問題に直面しています。新しい質問が追加されるとすぐにサイトマップが更新されるstackoverflowのように。

私が考えた 1 つの解決策は、バックエンドでサイトマップを作成し、サイトマップを返す API 呼び出しを作成することです。その API を呼び出す cron ジョブを作成し、Google がファイルを表示できるようにサーバーに配置した更新されたサイトマップを取得します。

私のアプローチが正しいかどうか、そして私の問題に対する他のより良いアプローチがあるかどうかを知りたいです。ありがとうございました。

0 投票する
0 に答える
108 参照

php - 複数のファイルからphpクラスを作成する

異なるphpファイル内の関数からクラスを偽造したいと思います。このようなことが可能でしょうか?

目標は、既存のシステムの管理画面をアップグレードするために使用できるモジュラー クラスを作成することです。

特性が答えかもしれません。どうすればそれらを動的に探すことができますか? どこで見つかるかはわかっていますが、それだけです。

get_declared_traits() は、おそらくそれを解決するものです。

0 投票する
3 に答える
9093 参照

laravel - Laravel / PHP で WordPress のようなプラグインベースのシステムを作成する

この質問はかなり長い間私を悩ませてきました.cms、より具体的には学校管理システムを作成したいのですが、私にとって最も重要なことは、管理者がダウンロードできるように、このシステムプラグインをベースにすることです.ワードプレスと同じように、管理パネルから直接プラグインをインストールします。

今、私は wordpress HooksActions、およびFiltersについて読みました。正直なところ、私はそれらの機能に少し慣れていると言えますが、同じ機能をLaravel アプリに適用するには... 、理解するのは少し難しいです少なくとも私にとっては。

この質問についても検索したところ、ほとんどの人がパッケージを提案していることがわかりました。ただし、パッケージは、パッケージの機能を利用したい他の開発者にとってはうまく機能しますが、パッケージに精通していないユーザーが簡単にインストールすることはできません。プログラミング言語、そしてそれこそが私のアプリケーションに必要なものです。

これまでのところ、Wordpress Actions and Filtersのように、Wordpress テーマ ファイルで使用したいほとんどすべてのもの (プラグイン機能を追加するためにそのコードを柔軟にするため) を関数として呼び出し、それを呼び出す必要があります。関数によるWordpress do_action() は、必須のパスのようなものであり、もちろん理にかなっています.

このようにして、プラグイン開発者はファイルで add_action() / add_filter() を呼び出すだけで、プラグインをアプリケーションのフローに入れることができます。そう...

基本的に私がここで求めているのは次のとおりです。

  • このような機能をlaravelアプリに適用するにはどうすればよいですか?
  • do_action() のような関数ですべてを呼び出すよりも簡単な方法はありますか?
  • プラグインをダウンロードおよび更新するための何らかのファイル管理モジュールを作成する必要がありますか?

繰り返しになりますが、私はこの種の機能を達成するためのワードプレスの方法にあまり精通していないと言わなければなりません。そのため、上記の説明の一部について間違っている可能性があります。

洞察をお寄せいただきありがとうございます。

*PS: 問題についてできる限り明確にしようとしましたが、開発中のシステムに固有の方法を探しているわけではありません。私が欲しいのは、できればLaravelでそのような機能を達成するための共通/最良の方法(最良の方法がある場合)を知ることですが、一般的なアルゴリズムは依然として非常に高く評価されます.

多くの人が同じ質問を持ち、同じ問題に取り組んでいることを知っているので、役立つ記事へのリンクだけでも提供していただければ幸いです.*

0 投票する
1 に答える
29 参照

javascript - DOM から多くの要素を読み込む

JSの基本は知っていますが、次のステップに進みたいと思います。

多くの要素で JS を使用して CSS を変更したいと考えています。問題は、要素を選択するために私が知っている唯一の方法が

そのため、後でその要素を名前で参照し、次のようにスタイルを変更できます。

これは問題ありませんが、すでに 10 個の要素がある場合、そのようにするのは非常に効率が悪いと感じています。

だから私の質問は、CSS をより効率的に動的に変更するためのより良い方法があるので、私のコードの冒頭は次のようには見えません。

それとも、非常に多くの変数があるのは普通ですか?

私の質問が理解できることを願っています。

PS:

Modular JavaScript について学び始めたところです。これは私の問題の助けになりますか?

0 投票する
2 に答える
778 参照

javascript - Webpack が JS ファイルで奇妙な構文エラーをスローする

JS ファイルの単純なファイル構造があります。

私の main.js ファイルは次のようになります。

そして、forms.js ファイルは次のようになります。

これにより、次のエラーがスローされます。

test() メソッドが定義されている行について構文エラーが発生しています。babel-loader を追加すると、main.js ファイルで ES6 コードがトランスパイルされ、正しく実行されます。

私の webpack.config.js ファイルは次のようになります。

babel-loader は forms.js ファイルなどで正しく動作しませんか? 構成ファイルなどでファイルまたはそのフォルダーを除外していないのに、なぜ構文エラーが発生するのですか? 別のプロジェクトで書いたので、これが有効なJSであることはわかっていますが、うまくいきました。

ところで、importmain.js ファイルも機能しませんが、他の ES6 機能は機能しますか? それはこれと何か関係がありますか?

0 投票する
1 に答える
49 参照

npm - モジュラー クロス プロジェクト設計 / 再利用可能で拡張可能なベースの作成

環境:

複数のアプリ ポータルで構成される新しいソリューションを作成しています (より適切な用語がないため)。各ポータルは、私が採用したプロプライエタリ コードの一部と、関連する新機能が既に含まれているベース プロジェクトを活用する必要があります。そのポータルに。私たちの現在のアプリには多くの要望が残されています。新たなスタートを切るため、正しい方法で進めたいと考えています。(なので、少し考えをまとめたいと思います)

ここに画像の説明を入力

ここに画像の説明を入力

これを解決するためのいくつかの可能な方法を考えました。それぞれに長所と短所があります。

1. GIT フォーク A ベース プロジェクト:

これは最も簡単な方法のようです。PortalCore プロジェクトを作成し、各プロジェクトでダウンストリームのみの方法でフォークします。

  • 短所: ベースが変更された場合、すべての依存プロジェクトを手動で更新する必要があります。
  • 長所: 最初の実装がより簡単で、他のより「面倒な」タスクのいくつかを削減できると思います。(たとえば、ビルド要件を備えた新しいポータルごとに移動する単一のビルド ファイル。)

フローは次のようになります。

Fork PortalCore > Core は、GIT マスターを介した更新によって最新の状態に保たれます

2. ベース プロジェクト NPM パッケージ:

これは理想的なルートのように思えます。デプロイごとに、基本パッケージ/プロジェクトの最新バージョンが各ポータルと共にインストールされるからです。

  • npm短所:私の調査によると、npmフォルダーの外にパッケージをインストールできないようです(これは私の質問に関係しています)。ビルド ファイルをプロジェクト ルートに配置する場合は、他の方法でビルド ファイルを共有する必要があります。
  • 長所: アップデートはビルド プロセスで自動的にロールアウトされます

フローは次のようになります。

新しいプロジェクト > ポータル コア npm を追加 > カスタム ビルド タスクを作成するか、中央リポジトリから取得 > npm インストールによって最新の状態に維持 > Gulp ビルド

3. 上記の組み合わせ

npm基本モジュールのみを含む git プロジェクトを作成し、構成を構築します。ビルドは、ファイルを正しい場所に移動するなどの処理を行うことができます (例: node_modles -> root)。

フローは次のようになります。

Fork PortalCore > Core はnpmインストールによって最新の状態に保たれます > Gulp Build


質問:

  1. npmパッケージ (または別のパッケージ マネージャー) でファイルを特定の場所にインストールする方法はありますか? (フォーラムをチェックしましたがnpm、これは行き止まりのようです。しかし、ここで運を試してみようと思いました)
  2. フランケンシュタインですか?新しいモンスターを作りたくありません。このロジックは理にかなっていますか ITO は設計上ある程度モジュール化する必要がありますが、保守を容易にするものを作成します。大物はどうやってこれを行うのですか... もし彼らがこれを行うとしたら?