Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   createElement VS innerHTML (https://javascript.ru/forum/misc/49100-createelement-vs-innerhtml.html)

zhurchik 29.07.2014 16:30

Octane,
Это тоже верно.

BETEPAH 29.07.2014 16:41

Цитата:

Сообщение от Octane
Шаблонизатору скармливаются параметры

какой процент Ваших проектов использует шаблонизаторы?

tsigel 29.07.2014 17:31

90% :)

Маэстро 29.07.2014 18:32

Цитата:

Сообщение от zhurchik (Сообщение 323270)
Что Вы подразумеваете под тем, что если форма небольшая то и createElement'ом можно обойтись? Просто я не совсем понял разницу между большой и маленькой, по сути то принцип один.

Тут разговор скорее не об отличии "маленькой" формы от "большой". Если маленькая форма имеет 1 инпут, а большая имеет 100 таких же инпутов, то я считаю такую "большую" форму тоже маленькой. Тут речь идет скорее об отличии между веб-сайтом и веб-приложением. Если Вы делаете обычный сайт, то там даже и innerHTML не нужен. Там вся форма грузится с сервера в виде полного HTML. А если это приложение с ajax, где перегоняются большие массивы (закодированных) данных, то страница строится "на лету", используя набор базовых функций предварительно загруженного ядра системы.

Например, у меня есть функция CreateFormOneLine(), которая "рисует" label, input, div, всякие тени, текстовые подсказки и прочее одной линии (полосы формы). В этом случае для формы, состоящей что из одного инпута, что из 100 я просто запускаю CreateFormOneLine() то ли 1 раз, то ли 100 раз.
Что касается провокационного вопроса "А если верстальщику захочется что-нибудь поменять?" (Octane), то это может быть проблемой если он у Вас есть! (верстальщик) А если даже и есть, то лично мне предпочтительнее внести изменения в пару строк javascript-кода, чем в верстку.

Вот примерчик (был написан за пол-дня специально для одного мероприятия):
http://gigalit.info/?101
Это большая форма или маленькая? ;)

kobezzza 29.07.2014 18:49

Цитата:

какой процент Ваших проектов использует шаблонизаторы?
100%

Octane 29.07.2014 19:29

Цитата:

Сообщение от Маэстро
предпочтительнее внести изменения в пару строк javascript-кода, чем в верстку.

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

kobezzza 29.07.2014 19:40

Цитата:

Сообщение от Octane (Сообщение 323311)
Поработаешь в команде, поменяешь свое мнение, когда к тебе будут стучаться или ставить таски по каждой мелочи типа дописать класс какому-нибудь элементу.

Да тут даже без команды нет ни одной причины не юзать шаблонизатор. Шаблонка решает проблемы code-reuse, защищает от выстрела в ногу (автоэскейпинг xss параметров), поддержка шаблона в N (где N количество строк генерируемого кода) раз проще ручной JS генерации за счёт удобного синтаксиса и прочих спец фич :)

BETEPAH 29.07.2014 21:26

kobezzza,
а как у шаблонизаторов отношение с поисковиками и прочими сео-прелестями?
Можете порекомендовать какой-то конкретный? Пока не приходилось с ними работать, но, учитывая единодушие в этой ветке, готов пересмотреть свое отношение к ним :)

kobezzza 29.07.2014 22:27

Цитата:

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

Цитата:

Можете порекомендовать какой-то конкретный?
https://github.com/kobezzza/Snakeskin :)

Маэстро 30.07.2014 13:26

Цитата:

Сообщение от kobezzza (Сообщение 323327)
... где используется шаблонизатор. Если на клиенте, то никак и придётся делать отдельную страницу для поисковиков. Хорошо когда один и тот же движок на сервере и клиенте...

-Вот именно. Упрощая жизнь в одном вопросе мы создаем проблемы в другом.
Могу поделиться своим вариантом решения проблемы. Наверное, стоило бы перейти в раздел "Ваши сайты и скрипты", но надеюсь автор темы не возразит, раз уж здесь пошел разговор.
Кто-то скажет, что я "изобрел велосипед". Не знаю, но такого метода я еще не встречал.
Сайт был разработан для смартфонов (косметика Avon). Необходимо передавать максимально сжатый текст, но обрабатываемый поисковиками. Посмотрите на страницу http://gigalit.info/mobile_data.php?u=1&gdb=10&menu=1 Это то, что видит поисковик. Только содержательная часть контента сайта. Практически никаких тегов кроме <div>, никаких стилей, никаких атрибутов.
В некотором роде это тоже можно назвать шаблонизатором. Весь контент описан случаями (case); их около 20. Номер случая кодируется в классе тегов (class), но не существует в разделе описания <style>.
При приеме в вебприложение этих данных javascript-функция парсит название класса и рисует на экране запрограммированные случаи.
Внутренности передаваемой страницы-массива выглядят приблизительно так:
<div class=m_cas_02_col_AA44AA_ id=14m>Глаза</div>
<div class=m_cas_14_gid_1624_pri_23d99_opr_37_img_1_>Тушь для ресниц «Цветная феерия»</div>
<div class=m_cas_14_gid_1557_pri_125_img_1_>Двойная компактная пудра с эффектом загара «Сияние лета»</div>
Что имеем в результате:
1. Не надо создавать отдельную страницу для поисковиков.
2. Передаваемые данные максимально сжаты, но читабельны для поисковика (и человека)
3. Рисование графики производится на клиенте с помощью javascript с учетом массы особенностей мобильных телефонов. Прорисовка производится быстро.

Вы скажете, что это более трудоемко, чем использовать классический шаблонизатор? Может быть. Но мы работы не боимся ;)


Часовой пояс GMT +3, время: 01:58.