5

Web アプリケーションに Content Site Protection を使用したいと考えています。聞いたことがない場合は、簡単に言うと、Web アプリに埋め込まれた JavaScript を無効にして、XSS の防止に役立てることができます。

その結果、すべての JavaScript コードを外部ファイルに含める必要があります。

ほとんどの JavaScript の「ライブラリ/フレームワーク」コードは既に存在しますが、通常、私のページには少なくとも数行の JS コードが含まれ、特定のページに関連するコンポーネントをインスタンス化します。

たとえば、架空の登録ページがあります。登録ページの下部に、次のコードがあります。

var registrationForm = new MyApp.registrationValidator($('.regform'));
registrationForm.init();

この架空のコードは、登録フォームへの参照を取得し、すべての検証コードを登録できます。

ここで、このコードを外部ファイルに移動する必要があります。私はできた:

オプション A : すべてのページに小さな .js ファイルを作成し、そのページに固有のコードのみを実行します。

  • 長所 - シンプルで比較的高速
  • 短所 - これはすべてのページに追加の js ファイルです。リクエストを減らすために、すべての JavaScript を 1 つのファイルに最小化できるようにしたいと考えています。

オプション B : すべての「インスタンス化コード」を JavaScript ファイルで実行します。ページに '.regForm' css クラスがあるかどうかを検出し、それらがページに表示される場合にのみオブジェクトをインスタンス化します。

  • 長所 - インスタンス化のための単一の場所。ページ上のコンポーネントは、適切な css クラスを持っていれば、魔法のように機能し始めます。
  • 短所 - アプリケーションがかなり大きくなると、特定のページには不要な初期化コードが大量に発生する可能性があります。

オプション C:タグ<body>に ID またはクラスを指定し、大きなスイッチに基づいて正しいコードを実行します。

  • 長所: 単一の .js ファイルに圧縮することができ、ページごとに .js ファイルは必要ありません。
  • 短所:これは少し醜いと思います。

全体として、大量の初期化コードを使用するのは悪い考えだと私が感じているという事実がなければ、オプション B が最も優れています。

私が主に疑問に思っているのは、この状況の経験はありますか、どのように解決しましたか?

4

2 に答える 2

3

オプション D (A と B のバリアント): そのページに必要なファイルのみを考慮して、複数の JavaScript ソース ファイルを 1 つにコンパイル (および圧縮) する展開システムを見てください。

PHP の場合、Asseticはそのようなシステムです。

于 2012-02-07T08:29:00.537 に答える
1

jQuery のようなフレームワークを (外部の JavaScript を動的にロードして実行するために) 使用したい場合は、A と B の利点を組み合わせることができます。すべてのページが同じ .js をロードし、動的にロードする他の .js ファイルを (dom 要素の有無によって) 決定します。

于 2012-02-06T12:41:07.620 に答える