0

ばかげた質問かもしれませんが、私はJavaScriptと非常に混同しています。私は、可能な限り控えめなJavaScriptを使用して、このコード編成に従います。私はGoogleマップを使用するRubyonRailsでWebサイトを構築しています。

私のシナリオ:非常に巨大なWebサイトがあり、さまざまなページで、いくつかのアクションを実行するJavaScriptスクリプトを開始する必要があるとします。

問題は、ユーザーがどのページにアクセスしたかに関係なく、自分のWebサイトのすべてのJavaScriptコードをユーザーのブラウザーに追加する必要があることです。たとえば、巨大なJavaScriptコードを使用するページAと、いくつかの小さなJavaScriptコードを使用するページBがあるとします。私が理解している限り、ページBでは、ユーザーはすべてのJavaScriptコードを取得する必要があります(つまり、ページAとBの両方)。それは少し非現実的ではありませんか?

さらに、両方のページで、JavaScriptはdocument.addEventListener("DOMContentLoaded", function, false);関数によって開始されます。ただし、ページAの関数は、「pageA」という名前のdivがあると想定しています(これは、jsスクリプトを介して変更または要素を追加するための参照として使用されます)。同様に、ページBの関数は、「pageA」という名前のdivがあると想定しています。 pageB」。したがって、私がページBIにいるとき、「pageA」の要素がないというjsエラーを受け取ります。どうすればそれを回避できますか?

すべてのページについて、JavaScriptコード全体(つまりすべてのページ)をユーザーにロードする必要があるという事実を考えると、どのように開始できますか(つまり、ユーザーイベントが発生した後ではなく、ページがロードされたときにすぐに開始します)そのようなエラーのない特定のJavaScriptコード?私は本当に混乱しています!

Wooho非常に速い応答はみんなに感謝します!しかし、私はjsコード全体を1つのファイルに書くとは決して言いませんでした。代わりに、RoRの組織を使用します。(ところで、すべてのファイルを1つのファイルに結合します)。問題を明確にするために、さまざまなファイルで、ページAのイベントとページB(またはCなど)のイベントを開始します。コードは、DOMContentLoadedイベントが発生するとすぐに起動します。ただし、ユーザーがページBにいるときは、ページAのイベントを発生させたくありません。または同様に、ページBのjsのみをロードしたい(ページAのイベントが発生しないようにするため)。どうやってやるの?

PS:あなたがより良いタイトルを考えたら、それを提案してください!

4

1 に答える 1

1

Javascriptコードを単一のファイルに保持する場合、ユーザーがWebサイトの最初のページを要求したときに、ロードする必要があるのは1回だけです(おそらく1回コンパイルすることもできます。これを参照してください)。次に、キャッシュを許可しない限り、ブラウザはキャッシュされたコピーを使用します(Webサーバーの設定が不適切な場合はそれが可能です)。

(JQuery)のようなことをするとき:

$('#nosuchid').something();

または例えば

$('.nosuchclass').each(function(i, el) { ... });

マークアップに一致する要素が存在しない場合、エラーや影響はありません。たとえば、を使用すると、一致する要素がない場合document.getElementById()に返さnullれ、その場合を処理する必要があります。これを適切に行うと、エラーは発生しません。

ご想像のとおり、スキップされたコードは実行に時間がかからないため、パフォーマンスの問題も予想されません。

于 2012-11-18T16:33:31.950 に答える