Как сейчас принято передавать данные из PHP в JS?

Вопросы по вёрстке и JavaScript
andrei.obuhovski
Сообщения: 610
Зарегистрирован: 2015.07.16, 10:50

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение andrei.obuhovski »

zelenin писал(а): 2017.03.20, 12:13 я про смешивание языков
Ну так в первом случае будет php+js+html. А во втором только php+html, а js будет в отдельном файле.
zelenin писал(а): 2017.03.20, 12:13
andrei.obuhovski писал(а): 2017.03.20, 12:01Но, согласен, что дата-атрибуты для текущей задачи не очень красивое решение. Лучше будет подгрузить данные асинхронным запросом.
оверинжиниринг
andrei.obuhovski писал(а): 2017.03.20, 12:01
zelenin писал(а): 2017.03.20, 11:27 уменьшит время загрузки документа, но увеличит время ожидания пользователем готовности формы.
Не аргумент. Т.к. пользователи не бросаются сразу заполнять поля формы, а смотрят что вообще есть на странице.
угу, поэтому они заметят загрузку лишнего килобайта текста, да?
Вы частенько любите перегибать от простого к сложному, и наоборот.
Естественно всегда есть вопрос уместности. Если это простенькое приложение в котором все глобальные переменные можно держать в голове, и можно допустить смешение трех языков, тогда действительно можно тупо писать:

Код: Выделить всё

<script>
var timezoneList = <?= json_encode($timezones) ?>; 
</script>
Но как только приложение начинает усложнятся, количество данных расти, и начинают расти условия необходимости тех или иных данных, тогда уже начинается дикий ад в html-коде. (типа такого)
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение rugabarbo »

Можно ведь во вьюшках через registerJs() до начала HTML-кода регистрировать передачу переменных из PHP в JS. Я так и делаю частенько. Сильного смешения в этом случае нет.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение zelenin »

andrei.obuhovski писал(а): 2017.03.20, 13:26 Вы частенько любите перегибать от простого к сложному, и наоборот.
потому что зачастую при перегибах становится понятным несостоятельность аргументации.
Вы привели в качестве довода время загрузки документа - я контраргументировал временем инициализации формы.
Вы привели довод неактуальности формы сразу после загрузки - я контраргументировал незначительностью объемов данных для того, чтобы юзер заметил лаг в тысячные секунды.
Итого: вы аргументируете тем, что вообще не важно.

так же как здесь:
первом случае будет php+js+html. А во втором только php+html.


или здесь:
Это гораздно лучше чем забивать глобальное пространсво js и смешивать php+js+html на одной странице.
опять же в качестве довода (глобальное пространство) выбирается не принцип (data vs variable), а его частный кейс, предложенный мной. Конечно мы можем создать переменную без глобальной видимости.
это хороший прием - для аргументации позиции для количества набить побочных аргументов, напрямую неотносящихся к предмету обсуждения - создается впечатление обширной доказательной базы, но этот прием нечестен, т.к. это только впечатление.
andrei.obuhovski
Сообщения: 610
Зарегистрирован: 2015.07.16, 10:50

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение andrei.obuhovski »

zelenin писал(а): 2017.03.20, 13:49
andrei.obuhovski писал(а): 2017.03.20, 13:26 Вы частенько любите перегибать от простого к сложному, и наоборот.
потому что зачастую при перегибах становится понятным несостоятельность аргументации.
Вы привели в качестве довода время загрузки документа - я контраргументировал временем инициализации формы.
Вы привели довод неактуальности формы сразу после загрузки - я контраргументировал незначительностью объемов данных для того, чтобы юзер заметил лаг в тысячные секунды.
Итого: вы аргументируете тем, что вообще не важно.

так же как здесь:
первом случае будет php+js+html. А во втором только php+html.


или здесь:
Это гораздно лучше чем забивать глобальное пространсво js и смешивать php+js+html на одной странице.
опять же в качестве довода (глобальное пространство) выбирается не принцип (data vs variable), а его частный кейс, предложенный мной. Конечно мы можем создать переменную без глобальной видимости.
это хороший прием - для аргументации позиции для количества набить побочных аргументов, напрямую неотносящихся к предмету обсуждения - создается впечатление обширной доказательной базы, но этот прием нечестен, т.к. это только впечатление.
Где вы привели пример создания js-переменной не в глобальной области видимости?
data-атрибуты это не js, это html. Js будет в отдельном файле, который закэшируется браузером.

Все аргументы из этого сообщеня актуальны. И время загрузки, при большом количестве данных, тоже актуально. Пример с 1кб - это вы привели. Сегодня 1кб, за завтра количество городов нужно увеличить и там уже будет 500 кб.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение zelenin »

andrei.obuhovski писал(а): 2017.03.20, 14:07
zelenin писал(а): 2017.03.20, 13:49
andrei.obuhovski писал(а): 2017.03.20, 13:26 Вы частенько любите перегибать от простого к сложному, и наоборот.
потому что зачастую при перегибах становится понятным несостоятельность аргументации.
Вы привели в качестве довода время загрузки документа - я контраргументировал временем инициализации формы.
Вы привели довод неактуальности формы сразу после загрузки - я контраргументировал незначительностью объемов данных для того, чтобы юзер заметил лаг в тысячные секунды.
Итого: вы аргументируете тем, что вообще не важно.

так же как здесь:
первом случае будет php+js+html. А во втором только php+html.


или здесь:
Это гораздно лучше чем забивать глобальное пространсво js и смешивать php+js+html на одной странице.
опять же в качестве довода (глобальное пространство) выбирается не принцип (data vs variable), а его частный кейс, предложенный мной. Конечно мы можем создать переменную без глобальной видимости.
это хороший прием - для аргументации позиции для количества набить побочных аргументов, напрямую неотносящихся к предмету обсуждения - создается впечатление обширной доказательной базы, но этот прием нечестен, т.к. это только впечатление.
Где вы привели пример создания js-переменной не в глобальной области видимости?
я его не приводил. Это что, невозможно? я же написал:
опять же в качестве довода (глобальное пространство) выбирается не принцип (data vs variable), а его частный кейс, предложенный мной. Конечно мы можем создать переменную без глобальной видимости.
вы спорите с частным кейсом, хотя речь идет о data/ajax vs variable
andrei.obuhovski писал(а): 2017.03.20, 14:07data-атрибуты это не js, это html. Js будет в отдельном файле, который закэшируется браузером.
я с этим и не спорю.
andrei.obuhovski писал(а): 2017.03.20, 14:07 Пример с 1кб - это вы привели. Сегодня 1кб, за завтра количество городов нужно увеличить и там уже будет 500 кб.
да, так бывает. сегодня вы выбираете на странице все 10 записей одной строчкой, а через год нужно будет прикручивать абстракцию в 200 строк, менять базу и добавлять более быстрое хранилище.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение anton_z »

ИМХО, php и js лучше не мешать. registerJs это то же самое
1) Такой js не закешируется браузером.
2) Сложнее читать - не будет подсветки в IDE.
3) Сложнее разделить обязанности - php developer/frontender.
4) Семантика - <div class="cities-list" data-cities="json..."></div>. Чем не семантика?
5) В семантике здесь нет особого смысла - data-атрибуты игнорируются роботами, ограничений на размер data-атрибутов нет.
6) Возможны проблемы с областью видимости, конфликтами имен.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение zelenin »

anton_z писал(а): 2017.03.27, 13:34 ИМХО, php и js лучше не мешать. registerJs это то же самое
1) Такой js не закешируется браузером.
закэшируется вместе с html
anton_z писал(а): 2017.03.27, 13:342) Сложнее читать - не будет подсветки в IDE.
в PS будет
anton_z писал(а): 2017.03.27, 13:343) Сложнее разделить обязанности - php developer/frontender.
эм, ну тут не идет речь о разделении. При наличии php developer/frontender этот вопрос вообще не встанет.
anton_z писал(а): 2017.03.27, 13:34 4) Семантика - <div class="cities-list" data-cities="json..."></div>. Чем не семантика?
а чем семантика?
anton_z писал(а): 2017.03.27, 13:345) В семантике здесь нет особого смысла - data-атрибуты игнорируются роботами, ограничений на размер data-атрибутов нет.
семантика - это не о роботах (тут должна была быть ссылка на определение семантики).
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение anton_z »

Я под семантикой здесь понимаю подход к использованию html-тегов в соответствии с их предназначением.
https://ru.wikipedia.org/wiki/Семантическая_вёрстка
Использование data-атрибута в моем примере как раз подходит под это определение. И роботы при чем. Иначе зачем вообще вести речь о семантике. Семантика в HTML нужна для облегчения анализа роботами, дисплеями брайля и другими вспомогательными устройствами.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение zelenin »

anton_z писал(а): 2017.03.27, 14:26 Я под семантикой здесь понимаю подход к использованию html-тегов в соответствии с их предназначением.
https://ru.wikipedia.org/wiki/Семантическая_вёрстка
Использование data-атрибута в моем примере как раз подходит под это определение. И роботы при чем. Иначе зачем вообще вести речь о семантике. Семантика в HTML нужна для облегчения анализа роботами, дисплеями брайля и другими вспомогательными устройствами.
я про семантику говорю в общем смысле как уместность использования чего-либо в "языке".
почему у div'а должен быть data-cities, я не знаю. div вроде бы не про города.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Как сейчас принято передавать данные из PHP в JS?

Сообщение anton_z »

А про что div по-вашему?

На мой взгляд что про что будет решает разработчик. div это логический блок - division. Строительный материал. Какую роль ему разработчик определит, такая и будет. Как классы в языке программирования.
Ответить