問題タブ [modularization]
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.
c++ - スパゲッティ コードのモジュール化
私はまだ C++ の初心者であり、与えられたスパゲッティ コードをモジュール化しようとしています。これまでのところ (git の使い方を学んだり、rarray ライブラリをインストールして自動配列をそれらに置き換えたりすることは別として)、物事をモジュール化し、それを make でコンパイルする方法について、ちょっと困惑していました。
ヘッダーでプロトタイプを作成し、関数からオブジェクト ファイルを作成し、それをすべて「ドライバー」コードでコンパイルする必要があることを理解しています。メイク ファイルの実行/書き込みは私の関心事ではありませんが、このようなコードのモジュール化を開始する方法です。配列を変更する関数の作り方がわかりません!
正しい方向への指針は素晴らしいでしょう。必要に応じて、さらに明確にすることができます。
angularjs - 大規模な AngularJS アプリケーションのベスト プラクティス
現在、JSP + JS ページで構成され、カスタム サーブレットによって提供される、かなり巨大なアプリケーションの新しいバージョンを開発しています。アプリケーションが大量のデータを処理する場合、ほとんどのビジネス ロジックはストアド プロシージャとしてデータベースに実装されます。このアプリケーションの主なセールス ポイントは、保存されたデータの視覚的な表現です。基本的に何でもモデル化して視覚化できます。現在のバージョンは Silverlight で視覚化されています。Silverlight は IE で最適に動作し、そのプラグインを必要としますが、これは明らかに悪いことです。私たちの目標は、可能な限りブラウザーに依存しないようにすることであり、主な問題は図の描画です。そこで、AngularJS+SVG を試してみることにしました。開発は、まったく新しいプロジェクト、Spring MVC REST バックエンド、単一ページの AngularJS アプリケーションから始まりました。数か月後、それが良い選択であることがわかりました。すべての機能を実装できます。次のメジャー バージョンをできるだけ早くリリースするために、古い JSP フォーム (ビジュアライゼーション以外の部分) を今のところ保持し、ビジュアライゼーションを Angular で書き直すことにしました。したがって、視覚化コンポーネントは、jsp または html での実行から独立している必要があり、フレームワークから独立している必要があります (iframe としてタブがあります: 1 つのダイアグラム エディター画面は iframe 内の jsp であり、現在は完全な angular アプリです。バックエンドはサーブレットベースであり、多くの機能が JS 関数で実装されています)。私の質問は、アプリケーションをできるだけ効果的にモジュール化するにはどうすればよいかということです。私はこれに触発されました したがって、視覚化コンポーネントは、jsp または html での実行から独立している必要があり、フレームワークから独立している必要があります (iframe としてタブがあります: 1 つのダイアグラム エディター画面は iframe 内の jsp であり、現在は完全な angular アプリです。バックエンドはサーブレットベースであり、多くの機能が JS 関数で実装されています)。私の質問は、アプリケーションをできるだけ効果的にモジュール化するにはどうすればよいかということです。私はこれに触発されました したがって、視覚化コンポーネントは、jsp または html での実行から独立している必要があり、フレームワークから独立している必要があります (iframe としてタブがあります: 1 つのダイアグラム エディター画面は iframe 内の jsp であり、現在は完全な angular アプリです。バックエンドはサーブレットベースであり、多くの機能が JS 関数で実装されています)。私の質問は、アプリケーションをできるだけ効果的にモジュール化するにはどうすればよいかということです。私はこれに触発されましたAngularJS+SVG のフローチャート アプリに関する記事で、Snap.SVG を使用して SVG 操作を行っています。
現在、これらは主要な部分です (個別の .js ファイル内):
- コントローラーで基本的なイベント処理を行うダイアグラム ディレクティブ。これには、DiagramViewModel への参照が含まれます。
- FlowChart アプリと同様に、指定された DiagramDataModel (バックエンドから受信した JSON オブジェクト) から構築された DiagramViewModel JS クラス
- ダイアグラムを編集するためのメソッドを含むDiagramEdit JSクラス(読み取り専用ユーザーがいます)、それが行うことは何でも、DiagramViewModelを含むため、それへの参照があります
- 基本的なナビゲーション (ズーム、パンなど) を行う DiagramNavigation JS クラス
- バックエンドとフレームワークの JS メソッド (ファクトリー) をラップするための angular モジュール
- 別のファイルの他のサービス (ロガー モジュール、エラー ハンドラー モジュールなど)
その際のポイントは、ディレクティブのコントローラーを薄くすることでした。そのため、ロジックは ViewModel クラスと DiagramEdit クラスで分離されています。このアプローチに関する私の主な関心事は、ViewModel または Edit クラスのいずれかのメソッドがフレームワーク呼び出しを必要とする場合、ViewModel のコンストラクター内の Controller によって ViewModel に与えられる参照を通じてそれを行う必要があるということです。したがって、基本的に角度の依存性注入を手動で行っています (フレームワーク/バックエンド ラッパー ファクトリはディレクティブのコントローラーに注入され、ViewModel コンストラクターへの参照を渡しています)。すべての魔法を実行する ViewModel を 1 つだけ持つ必要があります (たとえそれが非常に大きく、3K 行を超える場合でも)? または、AngularJS ファクトリを ViewModel として使用して、bakcend とフレームワークを使用する必要があります。のファクトリを ViewModel ファクトリに注入できますか? 機能グループごとに個別の Angular モジュールを使用する必要がありますか? もしそうなら、彼らはどのようにDiagramオブジェクトを共有できますか? $scopeで共有するだけですか?
私の懸念の非常に良い例: ツールバーにオートコンプリート入力フィールドがあります。変更されると、DiagramEdit はバックエンド呼び出しを行い、オブジェクトを検索します。呼び出しが戻ると、編集モジュールは結果を繰り返し処理し、SVG 表現をオブジェクトに追加します。そのためには、Angular によって挿入された $sce モジュールが必要です。次に、このリストは ng-repeat で視覚化され、編集モジュールの変数にバインドされます。
このリリースの後、他のページとフレームワークの開発を継続し、バックエンド側で Spring に切り替えます。したがって、このダイアグラム モジュールには、バックエンド呼び出しやクライアント アプリケーションの他の部分から独立した、明確に定義されたインターフェイスが必要です。
大規模な Angular 開発に関するもう 1 つの優れた記事は、これです。
jboss - ModuleClassLoader シングルトン
私はこの状況を持っています:
- JBOSS インスタンス
- アプリケーション client.war
- アプリケーション server.war
- インターフェイスのみを含む、適切にインストールされた jboss モジュール。
server.war アプリケーションは jboss モジュール インターフェイスを実装し、これらの実装を JNDI バインドで公開します。ルックアップを伴う client.war アプリケーションは、server.war の実装を使用します。
ランタイム client.war は、server.war によって公開された実装を呼び出すことができますが、休止状態のトランザクションを開始しようとするとすぐに、次のエラーが発生します。
エラー [stderr] java.lang.IllegalStateException: JBAS016071: Service Module Loader からのモジュール "client.war:main" の ModuleClassLoader にシングルトンが設定されていません。これは、デプロイメントに関連付けられていない Thread Context ClassLoader を使用して、Weld デプロイメントにアクセスしようとしていることを意味します。
そこで何日も頭をぶつけましたが、何が問題なのか理解できません。誰かが私を助けることができますか?
javascript - Javascript を C/C++ のように簡単にモジュール化する方法
私は完全にJavaScriptで構築された大規模なプロジェクトを持っています。サイト全体のエンジンである、順序付けられた「モジュール化された」5k行の.jsファイルがあります。
ここで、多くのコードを繰り返さなければならない他のサイト (このサイトの拡張) を作成する必要があります。私の質問は、Browserify、CommonJS などを使用して多くの可能性を見てきました。 m 検索中、C/C++ のように JavaScript をモジュール化して、関数または機能のファイルに #include を作成し、そのようなコードを再利用します。HTMLの他のJSファイルを含めてすでにこれを行っていますが、そのJSファイルは変数といくつかの配列にすぎず、サイトの機能ではありません。
私は jQuery も使用します。5,000 行の大きな .js ファイルでは、ほとんどすべてが jQuery の document.ready イベント内にあり、すべてのファイルに対して document.ready イベントを作成する必要があるため、これも問題を引き起こしています。
オリエンテーションが必要です
cocoa - 複数の XCTestCase クラスを使用した UITesting
プロジェクトの UITest ケースを作成しています。したがって、複数のファイルを XCTestCase にサブクラス化するか、その他のテスト クラスにサブクラス化する必要があります。そのようなファイルを作成するたびに、次のエラーが発生します。
次のことを試しましたが、何も機能しません。
MainFile.m
セカンダリファイル.m
複数の File UITesting クラスをモジュール化/作成する方法を教えてください。