PHP заявления в JQuery - PullRequest
       9

PHP заявления в JQuery

0 голосов
/ 04 июня 2009

Является ли это плохой практикой использовать операторы php, такие как 'if', внутри функции jquery?

Должен ли я просто писать, загружать больше функций, вместо того, чтобы ограничивать использование 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);

Ответы [ 6 ]

3 голосов
/ 04 июня 2009

На мой взгляд, это плохая практика с точки зрения читабельности и удобства сопровождения кода. Хотя бы потому, что это два языка, встроенные друг в друга, что означает, что вы не сможете понять это, не разбирая два языка, и для многих людей это вызывает умственную «ошибку страницы», когда контекст переключается между синтаксическим анализом JS и синтаксическим анализом PHP.

Достаточно просто иметь ветку javascript, основанную на том, какие элементы страницы присутствуют, и, на мой взгляд, это предпочтительное решение. Это лучше, чем условное предоставление определенного javascript (хотя я думаю, что предоставление другого javascript может начать иметь смысл, когда у вас огромное количество js), и это также лучше, чем ветвление на основе URL ... что происходит, когда вы переходите на этот рефакторинг?

Если вы действительно должны разветвлять, какой JS вы предоставляете на основе PHP, я бы хотел видеть их хотя бы в отдельных строках ... что-то вроде:

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

так как это было бы лучше, чем читать и понимать два языка в одной строке / утверждении.

1 голос
/ 04 июня 2009

Я стараюсь максимально разделить весь код (HTML / CSS / PHP / JS), потому что мне не нравятся большие куски кода JS в моем HTML или PHP. Что я обычно делаю с переменными - это просто помещаю их где-то в HTML, например <div id="url">value</div>, а затем получить его с помощью jQuery. Вне зависимости от переменных, у меня иногда есть несколько таких div'ов, где-то спрятанных на странице, используя display:none.

Таким образом, я все еще могу использовать один и тот же код JS для нескольких приложений, в зависимости от полученных значений. Я должен сказать, однако, что я понятия не имею, считается ли это нормально, или что эта установка / метод (также) не сделан.

1 голос
/ 04 июня 2009

Неплохая практика, так как иногда значение переменной PHP изменит то, что вы хотите, чтобы код делал.

Однако вам придется использовать, чтобы открывать и закрывать ваш код PHP.

1 голос
/ 04 июня 2009

разве вы не должны поместить свой 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);

не по теме: неплохое форматирование тоже было бы неплохо:)

1 голос
/ 04 июня 2009

это зависит. если вы просто записываете некоторые пользовательские данные для использования в JavaScript (например, идентификатор пользователя или имя), то нет. Но если вы часто используете PHP для управляющих структур, возможно, есть лучший способ сделать это.

Одним из основных недостатков вашего подхода (помимо немного уродливого кода) было бы предотвращение хорошего кэширования js. Динамически создавая js, а не в отдельный сжатый js-файл, вы теряете возможность его кэшировать и снижаете пропускную способность.

0 голосов
/ 04 июня 2009

Я не думаю, что это плохая практика. Я использую литералы ASP.NET для записи динамического jQuery на основе данных, которые возвращаются из базы данных. Я не часто этим занимаюсь, но бывают случаи, когда это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...