4

私は、「クラス」の概念を持つ言語でのコーディングのバックグラウンドを持っています。JavaScript をコーディングしているので、同様の方法でコーディングして、作成する各オブジェクト指向の「クラス」が個別のファイルになるようにしたいと考えています。

他の言語では、クラス ファイルの先頭にインポート ステートメントを作成して、クラス ファイル内で使用される他のカスタム クラスを確実にし、他のカスタム クラスが最終的なバイナリにコンパイルされるようにします。

もちろん、JavaScript はコンパイル済み言語ではありません。ただし、カスタム クラス ファイルの先頭にある種の「インポート」ステートメントを含めて、インポートされた JS の「クラス」ファイルをユーザーのブラウザでダウンロードできるようにしたいと考えています。

すべての個別のクラス ファイルを 1 つの JS ファイルに結合するサード パーティ製のツールがあれば理想的です。これにより、ブラウザーは、個別の JS「クラス」ごとに多くの呼び出しを行うのではなく、単一の JS ファイルに対して 1 つの HTTP 要求を行うだけで済みます。次のことを行うようなツールが存在するかどうかは誰にもわかりません。

  1. 単一の JS ファイルに含めたい JS ファイルを選択することができました
  2. ステップ 1 で選択したファイルをクロールすると、各カスタム「クラス」ファイルの先頭にすべての「インポート」ステートメントが見つかりました。これらの「インポート」ステートメントは、サード パーティがインポート ステートメントとして認識する、コード内の特別にフォーマットされたコメントである可能性があります。
  3. 次に、サードパーティは、ステップ 1 で選択したすべてのファイルと、ステップ 2 で見つかったインポートされたすべてのファイルを使用して、単一の JS ファイルを作成します。

一部の一般的な JavaScript フレームワークは、まさにそれを行っているようです。たとえば、jQueryUI を使用すると、使用するオブジェクトをユーザーがチェックできるようにすることで、単一の jQueryUI ソース ファイルのダウンロードをカスタマイズできます。チェックした項目に必要な要素のチェックを外すと、ファイルのダウンロードに進む前に修正する必要がある依存関係があることがフォームに示されます。

開発者がある種の「インポート」ステートメントコメントを使用して、多くの依存JSファイル(および開発者が必要とするもののみ)を単一のJSファイルに結合できるようにするサードパーティツールはありますか?

4

5 に答える 5

5

RequireJSはまさにこの目的のために構築されました。

于 2013-01-28T19:59:34.203 に答える
2

Require.jsを見てください。モジュール化された方法でさまざまな JavaScript ファイルをインポートし、それらの間に必要な依存関係を追加できます。また、最後に r.js を使用して、それらすべてを 1 つの JS ファイルに縮小できます。

于 2013-01-28T20:00:44.453 に答える
1

簡単なバッチ ファイルでこれを行うことができます。

@for %i in (classes/*.js) type %i >> build.js

これは、JS ソース ファイルがすべて 1 つのフォルダーにある場合に最適です。この例では、フォルダーの名前がclasses. サブフォルダーがある場合は少し複雑になりますが、同様の原則を適用できます。

于 2013-01-28T20:02:03.720 に答える
0

このクラスをチェックしてください https://www.youtube.com/watch?v=KnQfGXrRoPM これにより、クラス内でオンザフライでインポートできます。また、フォルダー内のすべてのクラスとそのすべてのサブフォルダーをインポートできます。String に追加された単なるプロトタイプ関数であるため、非常に単純です。"com.project.Classfile.js".import(); のようなクラスで呼び出すインポーター クラスを追加するだけです。または "com.project.*".import() を使用してすべてのサブクラスを取得します。フォークオン - https://github.com/jleelove/Utils

于 2014-12-26T05:50:41.780 に答える
0

GruntJSを見てください。JQueryはそれをビルドに使用します。HTTP リクエストを気にしない場合は、前述の RequireJS を使用できます。これには、ファイルをロードするための優れた非同期メソッドもあり、状況によってはパフォーマンスを向上させることができます。

于 2013-01-28T20:04:41.590 に答える