0

jquery関数内で「if」などのphpステートメントを使用するのは悪い習慣ですか?

PHPを使用していくつかの機能を制限するのではなく、より多くの機能をロードするだけでよいのでしょうか? 正常に動作しているように見えますが、これが主要な偽物であるかどうか疑問に思っていましたか?

例:

これはコード スニペットです。基本的に、php 変数 $url が 'projects' と等しい場合、コードは余分な行で返されます。そうでない場合、これらは他のページから隠されます。これは理にかなっていますか?

timer = setTimeout(function() {
                $('li#contact').removeClass('cur');
                $('li#$url').addClass('cur');
                "; if($url=='projects') { echo"
                $('ul.projects').fadeIn('slow');
                $('ul.image_display').css('display', 'block');"; }
                echo"
                    }, 8625);
4

6 に答える 6

3

私の意見では、これはコードの可読性と保守性の点で悪い習慣です。2つの言語が互いに埋め込まれているという理由だけで、2つの言語を解析しないと理解できないことを意味し、多くの人にとって、JSの解析とPHPの解析の間でコンテキストが切り替わるため、精神的な「ページフォールト」が発生します.

どのページ要素が存在するかに基づいて JavaScript ブランチを作成するのは簡単であり、これは私の意見では好ましい解決策です。特定の JavaScript を条件付きで提供するよりも優れています (ただし、圧倒的に大量の js がある場合は、別の JavaScript を提供することが理にかなっていると思います)。また、URL に基づいて分岐するよりも優れています...行ってリファクタリングするとどうなりますか?

PHPに基づいて提供するJSを本当に分岐する必要がある場合は、少なくとも別の行でそれらを表示したいと思います...次のようなもの:

<?php if($stmt): ?>
$(javascript).code.goes.here
<?php else: ?>
$(alernative.javascript).code.goes.here
<?php endif; ?>

1行/ステートメントで2つの言語を読んで理解するよりも優れているからです.

于 2009-06-04T14:59:39.550 に答える
1

私は、HTML または PHP 内に大量の JS コードを配置するのが好きではないので、すべてのコード (HTML/CSS/PHP/JS) をできるだけ分離しておくようにしています。私が通常変数に対して行うことは、変数を HTML のどこかに配置するだけです。たとえば<div id="url">value</div>、jQuery を使用して取得します。変数に応じて、これらの div のいくつかをページのどこかにdisplay:none.

このようにして、取得した値に応じて、複数のアプリケーションで同じ JS コードを引き続き使用できます。ただし、これが問題ないと見なされるかどうか、またはこのセットアップ/方法が(また)行われていないかどうかはわかりません。

于 2009-06-04T15:47:48.620 に答える
1

phpタグの間にphpコードを入れるべきではありませんか?そうしないと、サーバーで処理されるのではなく、ソース コードに表示されるだけです。

timer = setTimeout(function() {
                    $('li#contact').removeClass('cur');
                    $('li#$url').addClass('cur');
                    "; <?php if($url=='projects') { echo"
                    $('ul.projects').fadeIn('slow');
                    $('ul.image_display').css('display', 'block');"; }
                    echo"
                            } ?>, 8625);

トピック外: いくつかのより良いフォーマットもいいでしょう:)

于 2009-06-04T14:32:05.017 に答える
1

PHP 変数の値によって、コードで実行したいことが変わる場合があるため、悪い習慣ではありません。

ただし、PHP コードを開いたり閉じたりするには、 を使用する必要があります。

于 2009-06-04T14:34:50.223 に答える
1

場合によります。JavaScriptが消費するユーザーデータ(ユーザーIDや名前など)を書き出すだけの場合は、いいえ. しかし、制御構造に PHP を頻繁に使用している場合は、おそらくもっと良い方法があります。

あなたのアプローチの大きな欠点の1つは(コードが少し醜いことを除いて)、jsがうまくキャッシュされないことです。js を個別の圧縮された js ファイルではなく、動的に作成することにより、それをキャッシュする機能が失われ、帯域幅が損なわれます。

于 2009-06-04T14:30:15.147 に答える
0

悪い習慣だとは思いません。ASP.NET リテラルを使用して、データベースから返されたデータに基づいて動的 jQuery を書き出します。あまりやりませんが、必要な時もあります。

于 2009-06-04T14:25:00.990 に答える