3

PHPとJavaScriptを使ってウェブサイトを構築していて、JavaScriptをどこに入れるかはよくわかっていると思いますが、もっと具体的な状況が出てきて戸惑いました。現在、すべてのJavaScriptを1つの外部ファイルに入れており、すべてのPHPページに含まれています。

id ='myParagraph'の段落があり、ページの読み込み時にJavaScriptを使用してこの段落を赤で強調表示する必要があるとします。この段落は1つのPHPページにのみあり、私のWebサイトには約50の異なるページがあります。私はすぐに、次のようなコードを1つの外部JavaScriptファイルにスローする必要があると思いました。

$('#myParagraph').css('color', 'red')

そのページが読み込まれると、段落が強調表示されます。

私の質問は:これがそれを行うための最良の方法ですか?私の理解では、ページをロードするたびに、IDがmyParagraphの要素が検索されますが、私のページの98%にはそのIDがありません。これは無駄ですか?代わりに、次のコードを含める必要があります。

function highlightParagraph()
{
    $('#myParagraph').css('color', 'red')
}

1つのJavaScriptファイルにインラインJavaScriptを入れ、IDがmyParagraphのPHPファイルに入れて、ロード時に関数highlightParagraph()を呼び出しますか?これにより、myParagraphを含む1ページのみが検索され、強調表示されます。

オプション2が最適だと思いますが、インラインJavaScriptを使用しないようにいつも読んでいます。

編集:この例では、CSSを使用するだけだと思います。私はそれを使って質問を伝えています

4

3 に答える 3

4

インフラストラクチャ関数を含む1つの「大きな」jsファイルが必要であり、すべてのページにそのファイルへの参照が含まれている必要があります。

次に、各ページは、関連する関数のみを含む別のjsファイルを参照する必要があります。
外部jsファイルを使用することの良い点は次のとおりです。

  1. ファイルは最初のダウンロード後にキャッシュされます=>より高速なサーフィン。
  2. 懸念事項とは別に、プレゼンテーション層をスクリプト層から遠ざけます。

もう1つの重要な注意:
cssを変更する最良の方法は、javascriptではなくcss...を使用することです。

DOM対応の要素スタイルを変更する場合は、要素定義を追加するだけです。

#myParagraph{color: red;}
于 2012-06-14T21:08:06.037 に答える
3

インラインJavaScriptの問題は、現在数行から始めている可能性があることですが、数週間または数か月後には、合計して多くのインラインJavaScriptになります。インラインJavaScriptは、に含めるJavaScriptファイルのようにブラウザでキャッシュできないため、これは悪いことです<script src="path/to/file.js" />。ユーザーがページビューごとにフェッチするコンテンツを大量に追加すると、サーバーの帯域幅に負荷がかかり、ユーザーのページの読み込みが遅くなるため、これは悪いことです。

セレクターが数個しかない場合でも、心配する必要はありません。時間を無駄にすることで、ブラウザが汗をかくことはありません。ただし、サイトの別のページ/モジュールのコードが多くなる場合は、別のJavaScriptファイルに分割し、特定のページが読み込まれるときにそのファイルだけを含めることをお勧めします。そうすれば、ブラウザはそのファイルをキャッシュし、あなたとユーザーのためにその帯域幅を節約します。

于 2012-06-14T21:10:24.693 に答える
0

多くの人が私に同意しなくても(激しくさえ)私はそれほど驚かないでしょうが、ファイルの数や全体的な複雑さを減らすのであれば、そのページの特定のjavascriptを含むjavascriptタグをヘッダーに入れることに問題はありませんプロジェクトの。もちろん、どこでも行われている主要なことのほとんどは別のファイルに分ける必要がありますが、それが1ページの取引である場合は、清潔さを求めます。

同じことがcssにも当てはまります。そのページに固有の場合は、マスターcssファイルとは異なる特定の変更を加えたcssタグをヘッダーに配置するだけです。ところで、誰もが指摘しているように、これはCSSだけを使用したい場合です。

于 2012-06-14T21:08:42.417 に答える