2013-09-10 3 views
0

Я слышал много экспертов, говорящих, что ввод php-кода внутри javascript не является хорошей практикой. Я хотел знать, правда ли это. Если да, то это повлияет на производительность? или есть ли другие причины?Является ли хорошей практикой использовать PHP-код внутри javascript?

Например:

<?php 
$num=1; 
?> 

<script> 
var x = "<?php echo $num;?>"; 
</script> 
+0

Вы также смешиваете HTML и Javascript здесь с PHP-кодом в том же файле. Так что это уже тройной микс. Разве вы не думаете, что это немного для одного файла? – hakre

+1

Это уже упоминается в StackOverflow. Пожалуйста, обратитесь к этой ссылке: http://stackoverflow.com/questions/14849935/use-of-php-code-inside-javascript-code?rq=1 –

+0

Лучшее решение, если вы хотите любое значение в javascript, а затем сохраните его в вашем html в скрытом поле и получить доступ к нему, используя js –

ответ

2

Нет, это не является хорошей практикой.

будет ли это влиять на производительность?

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

Есть ли другие причины?

Смешивание двух языков затруднено, так как оно требует правильного кодирования. Это усложняет ситуацию. Сложность - плохая практика.

+0

По производительности я имел в виду скорость исполнения. –

+0

У меня такое ощущение, что даже если бы на скорости (большей производительности) было бы преимущество, вы бы этого не заметили. То же самое для снижения производительности. Там, скорее всего, нет разницы в скорости выполнения на всех, что имеет значение. Возможно, было бы даже то, что иногда у одного, а иногда и у другого больше производительности. - производительность, на которую вы получите выгоду, - это скорость разработки и производительность благодаря надлежащей изоляции проблем и строгой обработке и обработке данных. – hakre

+0

@naomik: thx: D – hakre

1

Как правило, это плохая практика, чтобы использовать язык X для генерации кода на языке Y.

Попробуйте развязку на двух языках, делая их данные только интерфейс - не смешивайте код.

В вашем примере, вы могли бы улучшить код, используя PHP для заполнения структуры CFG, которая доступна для JavaScript:

https://softwareengineering.stackexchange.com/questions/126671/is-it-considered-bad-practice-to-have-php-in-your-javascript

+0

В чем преимущество использования структуры CFG? –

+0

@NabeelSheikh http://cfg.good.is/lessons/javascript-getting-started –

+0

@NabeelSheikh CFG означает 'Coding For Good' –

1

НЕТ это не повлияет на производительность, но влияет на управляемость и безопасность.

В вашем случае, может ли ваша функция javascript, не зная значения num? или Вы просто разрабатываете JS-скрипт из PHP? Последнее - это то, что вам следует избегать.

Давайте попробуем пример, где num был использован для получения информации о количестве товаров в корзине. Теперь это очень важная часть информации, но с ее JS ее можно легко манипулировать. В таком случае вы должны хранить такую ​​конфиденциальную информацию на сервере, а не на клиенте.

+0

Это не конфиденциальная информация. Это похоже на то, когда вы вводите конкретный URL-адрес, исходя из числа, переданного в URL-адресе с использованием метода get, устанавливается переменная php (isset). В javascript мы проверяем, что переменная php равна определенной переменной javascript, используя условие IF. Надеюсь, вы поняли. –

0

Несколько моментов:

  1. Вы теряете способность Минимизировать ваши скрипты JS, потому что это зависит от вывода PHP
  2. код быстро становится трудно поддерживать. Вам нужно будет сканировать теги PHP в вашем javascript-коде.

Обычно я объявляю глобальный объект конфигурации и вытягиваю его через отдельный запрос ajax при загрузке страницы (это может быть сценарий PHP, повторяющий JSON).

MyApp : { 
    x: '123', 
    y: 'xxx' 
} 

, а затем получить доступ к нему из моих файлов JavaScript позже:

(function(){ 
    alert(MyApp.x) 
})(); 
0

Я не думаю, что это плохая практика, если значения являются динамическими, вы можете просто сделать, как,

тест .php

<script type="text/javascript"> 
    var foo = '<?php echo $foo;?>'; 
</script> 
<script type="text/javascript" src="test.js"></script> 

test.js

$(function(){ 
    alert(foo); 
}); 

Если это не динамические значения, не рекомендует необходимости использовать PHP теги

0

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

Смежные вопросы