|
|
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
Всем привет. Пытаюсь научиться отделять html от js. Привожу упрощенный пример: Пусть есть web-страница, на которой выводится список товаров. В блоке каждого товара выводится также кнопка "Купить", при нажатии на которую данные отправляются в ajax-файл (какие действия в нем производятся - не суть важно). В этот файл в качестве параметра нужно отправить id товара. В скрипте (php) он естественно известен. Я всегда делал так: в цикле формируем блок с товаром (для каждого выбранного из БД товара вызываем нижеописанную функцию, которая генерит html): Код: php 1. 2. 3. 4. 5. 6. 7. А вот JS-функция, которая отправляет данные в ajax-файл: Код: javascript 1. 2. 3. 4. 5. Что получается: небольшая сместь html и js. В функции вывода html присутствует onclick="...". Сейчас, смотрю, модно отделять html от js. Переписав вышеописанное, должно получиться что-то типа того: Код: php 1. 2. 3. 4. 5. 6. 7. 8. Дальше в JS: Код: javascript 1. 2. 3. Понятное дело, можно самому придумать решение данной задачи. Но мне хотелось бы понять, как делать правильно в таких случаях. Первое, что приходит в голову, это в каждом блоке с товаром вывести дополнительно скрытое поле, которое будет содержать идентификатор товара. Дальше в js получить массив объектов с классом product_block, пробежаться по ним в цикле, получить для каждого свой идентификатор товара и сформировать функцию, которая будет передавать его куда нужно. Но может есть какие-то другие и более правильные способы решения? PS: а вообще, для чего это все нужно, это разделение? Это просто мода, или это чем-то объективно лучше? И как по скорости, никто не проверял? Просто если таких блоков с подобными js будет много, на клиенте может настать тупняк. Или я ошибаюсь? Все заранее спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 23:44 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhayНо может есть какие-то другие и более правильные способы решения?Использовать атрибут id или атрибут data-*. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 08:37 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
Например: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 08:56 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhayдолжно получиться что-то типа того: Код: php 1. 2. 3. 4. 5. 6. 7. 8. Дальше в JS: Код: javascript 1. 2. 3. Но может есть какие-то другие и более правильные способы решения? Как уже предлагалось выше Код: php 1. 2. 3. 4. 5. 6. 7. Код: javascript 1. 2. 3. urukhayЭто просто мода, или это чем-то объективно лучше? Как вариант, меньше контента - меньше раздражений коже... urukhayПросто если таких блоков с подобными js будет много, на клиенте может настать тупняк. Или я ошибаюсь? Если блоков больше, да плюсом добавить контента (как в старом варианте) - будет только хуже. При разделенном подходе скрипт грузится 1 раз, затем он в кеше. Если контент без скриптов - быстрее загрузка. Т.ч. выигрыш вроде как на лицо даже в этом... А далее все без разницы... Событие хоть "навешаное" скриптом, хоть "прописаное" в контенте, все равно отработает. По скорости все зависит только от алгоритма... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 09:02 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
skyANA Код: javascript 1. У автора предполагается динамическая подгрузка контента, т.ч. ему больше подойдет http://jquery-docs.ru/events/live/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 09:19 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
krvsa, динамически у него что-то в блок с корзиной подгружается, а не список товаров. Метод .live() устарел, вместо него рекомендуется использовать .on() . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 09:30 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
skyANAМетод .live() устарел, вместо него рекомендуется использовать .on() . Но суть-то у них одна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 10:01 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhay, для формирования динамического Html используй шаблонизатор типа EJS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 10:11 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
автор$('.product_block a').click(function) { alert($(this).data('id')); } Этот вариант мне подоходит. Но: 1. Что за атрибут data-id? Ранше таких вроде не было в стандарте. Это новый? Он пройдет валидацию на стандарт в3ц? 2. А если теперь усложнить пример. В первом случае мне нужен был только id товара. Пусть теперь мне нужно для каждого блока с товаром получить его id, а также id магазина, который продает этот товар и стоимость этого товара. Опять же, в скрипте это все известно, в php функцию я их передать могу. автордля формирования динамического Html используй шаблонизатор типа EJS Большинство шаблонизаторов работают на принципе замены. У меня - конкатенация. Она вразы быстрее замены. Это первый аргумент. А второй - не люблю я их, да и двиг мой весь на конкатенации :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 12:34 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhay, сходите в гугл с запросом "атрибут data-*". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 12:35 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
Или лучше с таким запросом: "HTML 5 data- Attributes". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 12:38 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhay1. Что за атрибут data-id? Ранше таких вроде не было в стандарте. Это новый? Он пройдет валидацию на стандарт в3ц? На это уже ответили выше... urukhay2. А если теперь усложнить пример. В первом случае мне нужен был только id товара. Пусть теперь мне нужно для каждого блока с товаром получить его id, а также id магазина, который продает этот товар и стоимость этого товара. Делай еще больше атрибутов типа Код: html 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 13:19 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
skyANA, Спасибо. krvsa, Т.е. как то так? Код: html 1. и т.д? А если их там 10 штук?) В результате, убираем JS код из HTML, но увеличиваем объем HTML :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 13:38 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhayВ результате, убираем JS код из HTML, но увеличиваем объем HTML :)JS убирают не для уменьшения объема, сказали же уже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 13:45 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhayТ.е. как то так? Код: html 1. и т.д? А если их там 10 штук?) В результате, убираем JS код из HTML, но увеличиваем объем HTML :)Почитайте про MVC в JavaScript и выберите сами свой путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 13:47 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhayТ.е. как то так? Код: html 1. и т.д? А если их там 10 штук?) В результате, убираем JS код из HTML, но увеличиваем объем HTML :) Не обязательно... Можно сделать как с параметрами Код: javascript 1. А потом прочитаное преобразовать в массив параметров... 8-Q ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 13:57 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
ПаганельJS убирают не для уменьшения объема, сказали же уже Смотря как реализовывать... В путевой реализации и объём может быть уменьшен... Т.ч., urukhay , если придумаешь фигню - будет фигня. А если поднапрячся, проявить смекалку - будет путний код и контент... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 14:00 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
krvsaПаганельJS убирают не для уменьшения объема, сказали же уже Смотря как реализовывать... А какие есть варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 14:14 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
skyANAА какие есть варианты? Я привел пример... Но честно не совсем понимаю для какой надобности нужно действительно много параметров... Мне пока хватало что-то в районе 5 на один элемент... Но я не отрицаю, что если начать "мутить" можно нагенерить и больше! Вопрос только - зачем мутить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 14:31 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
авторНо честно не совсем понимаю для какой надобности нужно действительно много параметров Все зависит от задачи. Ладно, спасибо всем за участие. Буду изучать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 15:20 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhay, ещё почитайте про ООП в JavaScript: Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 16:02 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
С ООП в JS знаком. Сам его использую, просто приводил упрощенный пример. Кстати, раз уж зашел разговор на тему ООП: раньше в php классы сыроваты были и работали значительно медленнее процедурки. Как сейчас? Правда двиг весь на процедурке, тяжело будет перекочевывать на ООП, если что :) Да и надобности в принципе пока не вижу. Задал вопрос из любопытства) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 16:15 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
Может, в форуме по php рассказали бы больше про ооп в php... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 16:20 |
|
||
|
Разделение html и js
|
|||
|---|---|---|---|
|
#18+
urukhay, не знаю что там в PHP было раньше. Лично у меня к PHP5 + Kohana Framework претензий нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 16:35 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38340685&tid=1448083]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 366ms |

| 0 / 0 |
