Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 11.07.2012, 11:06
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
С точки зрения unit-тестирования это скорее всего тоже неудобно.
Не знаю, не пользовался. Хотя тестировать отдельные методы - как раз легко.

Сообщение от x-yuri
как?
Если тег валится с ошибкой (например, некорректное JS-выражение в атрибуте), то:
1. На объекте пространства имен шаблонизатора генерируется ошибка:
{
  message: 'ReferenceError: data is not defined',
  templatePath: 'путь к шаблону',
  TypeError: 'RenderError',
  nodeName: 'имя тега',
  line: 'номер строки',
  char: 'позиция символа, с которого начинается тег'
}


2. Тег со всем содержимым не попадает в результат.
3. Если использовать опцию конфига debug - true, на месте тега будет сгенерирован html-код:
<h3>RenderError:<br /> ReferenceError: data is not defined<br />Template: templates\page.xml<br />Node name: if<br />Line: 30<br />Char: 2</h3>


Сообщение от x-yuri
ну например, приходит запрос
Как я вижу это сейчас:
1. Запрос передается в сервис.
2. Сервис валидирует запрос и вызывает подходящий шаблон.
Сообщение от x-yuri
Есть отличие между обработкой GET- и POST-запросов?
Я об этом пока не думал, но думаю что да. При посте, до рендерига шаблона, выполняем некие действия с помощью тех же ручек, а потом рендерим. Хз, вроде сойдет.
Сообщение от x-yuri
вот я и говорю, что ты переносишь часть кода в язык разметки
Сообщение от x-yuri
с некоторым перекосом в сторону активности шаблона
Не вижу ничего плохого
Всё-таки есть некий предел. В PHP его нет.
Сообщение от x-yuri
А язык разметки неудобен для написания кода.
Думать надо не кодом, а конструкциями. Тогда не будет возникать таких мыслей.
Сообщение от x-yuri
есть все-таки две вещи, которых немного не хватает в mustache
Продолжай
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 11.07.2012 в 11:33.
Ответить с цитированием
  #52 (permalink)  
Старый 11.07.2012, 11:20
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
можно пример?
Да. Если будет решено убирать блок online-пользователей, его придется убирать и в шаблоне и в логике. В шаблоне найти легко, в логике сложнее, смотря какой там код.

Представь обычную рабочую ситуацию: пришел таск убрать некий блок. У нас сейчас достаточно скинуть задачу на верстака и он всё сделает. А так придется напрягать как верстака так и кодера. Круто? Я считаю что нет.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #53 (permalink)  
Старый 11.07.2012, 15:26
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от B~Vladi
Если тег валится с ошибкой (например, некорректное JS-выражение в атрибуте), то:
Вообще я имел в виду скорее ошибки работы с БД, например. И что значит "На объекте пространства имен шаблонизатора генерируется ошибка:"? Ошибку надо прямо в шаблоне обрабатывать? Опять же слишком много кода в шаблонах, на мой взгляд.

Сообщение от B~Vladi
Всё-таки есть некий предел. В PHP его нет.
Так дело же не в пределе. Php, несмотря на отсутствие предела, удобен как шаблонизатор. В нем код записывается в виде кода, а не в виде разметки.

Сообщение от B~Vladi
Думать надо не кодом, а конструкциями. Тогда не будет возникать таких мыслей.
Это как? O.o

Сообщение от B~Vladi
Продолжай
  1. Не хватает or. Пример and:
    {{#cond1}}{{#cond2}}test{{/cond2}}{{/cond1}}
    
  2. Не хватает встраивания кода в шаблон, в отдельных случаях, я таких два пока что обнаружил:

    • Автоматическое добавление времени изменения файла к url, что-то типа
      <link rel="stylesheet" href="{{#add_timestamp}}/css/index.css{{/add_timestamp}}">
      
    • Перевод фраз с подстановкой данных, что-то типа
      {{@:пользователь (?(м)отпавил)(?(ж)отпавила) Вам сообщение.}}
      

      И сюда надо как-то передать пользователя, м и ж.
В общем-то я эти проблемы как-то решил, но это заставило меня задуматься о слишком минималистичном синтаксисе.

Сообщение от B~Vladi
Да. Если будет решено убирать блок online-пользователей, его придется убирать и в шаблоне и в логике. В шаблоне найти легко, в логике сложнее, смотря какой там код.

Представь обычную рабочую ситуацию: пришел таск убрать некий блок. У нас сейчас достаточно скинуть задачу на верстака и он всё сделает. А так придется напрягать как верстака так и кодера. Круто? Я считаю что нет.
От организации зависит. Кроме того, если бы шаблон был активным, верстак все равно бы не убирал ручку, а только ее вызов. А это равносильно не убиранию лишних данных в логике (виде, активной составляющей шаблона), так что будет ("Ну и при поддержке нужно будет синхронизировать шаблон с логикой агрегации данных, а это лишний геморрой. Его не будет в активных шаблонах.")

Кроме того, следующий момент остался без примера:
Сообщение от x-yuri
Очень просто. Для пассивных шаблонов данные максимально соответствуют структуре представления. Если изменится view - нужно будет менять данные. Если будет несколько подобных view - либо для каждого агрегировать отдельный набор данных, либо использовать одни, но при этом может получится так, что для какого-то представления будут передаваться ненужные данные.
Ответить с цитированием
  #54 (permalink)  
Старый 11.07.2012, 16:15
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
И что значит "На объекте пространства имен шаблонизатора генерируется ошибка:"?
Да, замудрил. В общем, вот как это отлавливается:
TEN.on('error', function () {});


Какие сайчас могут быть ошибки на этапе шаблонизации:

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

2. Ошибки получения данных. Типо:
Сообщение от x-yuri
ошибки работы с БД
Могут возникать как в пассивных, так и в активных шаблонах. Не передали тебе объект в нужном ключе - обрабатываем на уровне разметки. Нет соединения с базой - вернули объект ошибки - обработали на уровне разметки.
Эти ошибки так же могут быть обработаны на уровне логики получения этих данных.


Сообщение от x-yuri
В нем код записывается в виде кода, а не в виде разметки.
И этим он удобен? Странный вывод на мой взгляд. Мне жаль верстальщиков и кодеров, которые работают с этим.

Сообщение от x-yuri
верстак все равно бы не убирал ручку, а только ее вызов
Он и не должен этого делать.
Если бы задача стояла как: "выпилить такой-то блок со всего сайта", кодер выпилил бы ручку. Кодеру в любом случае как минимум нужно посмотреть таск. Если он хорошо знает систему, то сходу было бы ясно - выпиливать ручку или нет.

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

Сообщение от x-yuri
Это как? O.o
Ну как. Смотришь на конструкцию (тег, в данном случае) - видишь конструкцию, а не её скомпилированный код. Не надо пытаться писать код. С конструкциями проще абстрагироваться от всего низкоуровневого, что дает низкий порог вхождения (пусть верстаки пишут шаблоны).

Сообщение от x-yuri
Кроме того, следующий момент остался без примера:
Ну ок, кодер реализовал вывод online-пользователей, прилепил к данным, которые будут отдаваться необходимому шаблону. Верстак написал шаблон. Потом приходит задача, показывать этот блок только в IE8, при полной луне и конкретном get-запросе. Как это лучше запилить? Прокинуть 3 лишних флага и верстак сам if-ами разрулит или пусть кодер это запилит? Пока ответь, а я потом продолжу сценарий.


Как я вижу рабочую ситуацию, используя мой подход с активными шаблонами:
Пришел таск: "вывести список online-пользователей". Таск переводится руководителем на кодера. Кодер реализует метод getOnline. В комментах к таску пишет: "Дернуть метод getOnline. Принимает аргументы: (бла бла), возвращает параметры: (бла бла)." и переводит на верстака.
Верстак пишет в шаблоне:

<ten:query method="getOnline" arguments="" params="error, data">
   <ten:if expr="data">
     <!-- обработка data -->
   </ten:if>
</ten:query>


Где тут много кода? Не намного больше чем в пассивном шаблоне.
Если придет задача вывести этот блок на другую страницу, кодер, зная что уже есть такой метод, перекинет таск сразу на верстака. Совершенно не задумываясь куда его нужно вставить.
Как тебе такой сценарий? Можно работать?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 11.07.2012 в 16:29.
Ответить с цитированием
  #55 (permalink)  
Старый 12.07.2012, 11:26
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Какая-то у тебя странная категоризация ошибок: "К этим ошибкам [парсинга] так же относятся исключения, выкидываемые методами получения данных (ручка)." Какого плана исключения?

Сообщение от B~Vladi
И этим он удобен? Странный вывод на мой взгляд. Мне жаль верстальщиков и кодеров, которые работают с этим.
Да, если у меня будет выбор между молотком и кувалдой, в случае, если мне надо забить гвоздь, я выберу молоток.

Кого кому жалко... не думаю, что это способствует конструктивному обсуждению...

А у php как шаблонизатора не большие недостатки (как для меня): 1) невозможно наследование шаблонов, 2) нереализуема защита от дурака, ну и от ошибок типа "забыл проэкранировать переменную". Знаешь, был какой-то период когда я возлагал слишком большие надежды на них (шаблонизаторы), а потом пришло понимание, что native php ни чем не хуже большинства существующих, а то и лучше. Ну и не только у меня так было. Наверное это был акт массового слабоумия

Сообщение от B~Vladi
Он и не должен этого делать.
Если бы задача стояла как: "выпилить такой-то блок со всего сайта", кодер выпилил бы ручку. Кодеру в любом случае как минимум нужно посмотреть таск. Если он хорошо знает систему, то сходу было бы ясно - выпиливать ручку или нет.
Сообщение от B~Vladi
Нет, просто останется неиспользуемый метод. Это не так страшно как затраты на агрегацию ненужных данных.
минутку, я не предлагал оставить ненужные данные. Просто я в первую очередь рассматриваю вариант, когда программист и верстальщик - это один и тот же человек. Ну либо когда верстальщик способен менять простейший код.

Сообщение от B~Vladi
Ну как. Смотришь на конструкцию (тег, в данном случае) - видишь конструкцию, а не её скомпилированный код. Не надо пытаться писать код. С конструкциями проще абстрагироваться от всего низкоуровневого, что дает низкий порог вхождения (пусть верстаки пишут шаблоны).
у тебя тот же самый код, только записанный в неудобной для восприятия форме. Если бы у тебя ручки дергались декларативно... это было бы действительно качественное отличие.

Сообщение от B~Vladi
Ну ок, кодер реализовал вывод online-пользователей, прилепил к данным, которые будут отдаваться необходимому шаблону. Верстак написал шаблон. Потом приходит задача, показывать этот блок только в IE8, при полной луне и конкретном get-запросе. Как это лучше запилить? Прокинуть 3 лишних флага и верстак сам if-ами разрулит или пусть кодер это запилит? Пока ответь, а я потом продолжу сценарий.
"только в IE8" - ничего прокидывать не надо, это прямо в шаблоне должно решаться, по поводу полной луны могут быть варианты, а по поводу url - вариантов нету, должно прокидываться из контроллера.

Как я говорил, я бы разделил контент на основной (то, что соответствует url) и дополнительный (всякие top10, баннеры, меню, наверное). Данные из url должны передаваться пассивным методом, из контроллера в шаблон, а остальное можно и активным. При этом шаблон в любом случае состоит из активной части, которая получает нужные данные либо от контроллера, либо сама, из модели, и подготавливает их для отображения. И пассивной, которая рендерит данные. Первое давай назовем вид, второе - шаблон.

Сообщение от B~Vladi
Где тут много кода? Не намного больше чем в пассивном шаблоне.
Ну давай сравним...
<ten:query method="getOnline" arguments="" params="error, data">
   <ten:if expr="data">
     <!-- обработка data -->
   </ten:if>
</ten:query>

{{#online_users}}
{{/online_users}}

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

Сообщение от B~Vladi
Если придет задача вывести этот блок на другую страницу, кодер, зная что уже есть такой метод, перекинет таск сразу на верстака. Совершенно не задумываясь куда его нужно вставить.
Теоретически твой вариант лучше с точки зрения минимазации количества людей задействованных в решении задачи. Насколько это важный момент, чтобы его было необходимо решать, я затрудняюсь ответить. У кого как, я так полагаю.

Сообщение от B~Vladi
Как тебе такой сценарий? Можно работать?
Мне-то точно не нравится, это у верстаков надо спрашивать...
Ответить с цитированием
  #56 (permalink)  
Старый 12.07.2012, 11:51
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
К этим ошибкам [парсинга]
Это не ошибки парсинга (компиляции). Это ошибки выполнения кода (синтаксические, эксепшны и т.п.).

Сообщение от x-yuri
Какого плана исключения?
Метод может выкинуть исключение.

Сообщение от x-yuri
Если бы у тебя ручки дергались декларативно... это было бы действительно качественное отличие.
Приведи пример. Желательно с учетом того, что ручки асинхронны.

Сообщение от x-yuri
Данные из url должны передаваться пассивным методом, из контроллера в шаблон, а остальное можно и активным.
Согласен, это можно легко организовать.

Сообщение от x-yuri
у тебя тот же самый код
Нет кода. Есть только конструкции и выражения внутри конструкций.

Сообщение от x-yuri
только записанный в неудобной для восприятия форме
Это твоё личное мнение

Сообщение от x-yuri
{{#online_users}}
{{/online_users}}
Где тут аргументы, параметры? Никакой реюзабельности, гибкости. Отдельный метод на конкретное действие. Если понадобится выводить 10 пользователей в одном месте, а 20 в другом - придется писать 2 метода. Так что пример не засчитан, c таким же успехом я могу написать так:
<ten:context object="online_users()">
</ten:context>


Сообщение от x-yuri
Потому что в твоем шаблоне рендеринг смешивается с кодом. Т.е. сложнее понять, что должно отрендериться.
В соседней теме люди писали что в основном всё понятно с первого взгляда, без доки. Может ты просто не понял самого принципа? Скажи какое конкретно место не понятно.
Сообщение от x-yuri
Мне-то точно не нравится, это у верстаков надо спрашивать...
Чем? Так работает весь маркет, все проекты на xscript-те. Только там активная и пассивная части разделены по файлам, у меня же всё вместе.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 12.07.2012 в 11:57.
Ответить с цитированием
  #57 (permalink)  
Старый 12.07.2012, 19:47
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от B~Vladi
Это не ошибки парсинга (компиляции). Это ошибки выполнения кода (синтаксические, эксепшны и т.п.).
Сообщение от B~Vladi
Метод может выкинуть исключение.
ну пускай не парсинга, но я бы в любом случае разделил на ошибки программиста и ошибки при обращении к ресурсам. И еще какие-то свои у тебя там исключения, эти я не знаю куда.

Сообщение от B~Vladi
Приведи пример. Желательно с учетом того, что ручки асинхронны.
Для этого надо дергание ручки вынести из шаблона, а в шаблоне принять результирующие данные. Вот тогда ты действительно абстрагируешься от низкоуровневого дергания ручек и понизишь порог вхождения. А записывание кода разметкой ничего не меняет, кроме понижения читабельности:
Код:
f(1, 2, 3)
<call function="f">
    <arg value="1">
    <arg value="2">
    <arg value="3">
</call>



Сообщение от B~Vladi
Нет кода. Есть только конструкции и выражения внутри конструкций.
ты суслика видишь? Конструкции - это только оправдание. Типа это не код, это конструкции. Которые на самом деле код, императивный код.

Сообщение от B~Vladi
Где тут аргументы, параметры? Никакой реюзабельности, гибкости. Отдельный метод на конкретное действие. Если понадобится выводить 10 пользователей в одном месте, а 20 в другом - придется писать 2 метода.
аргументы и параметры в виде, активной составляющей, который может использовать ту же самую ручку, что и твой шаблон. Т.е. отличие только в том, где дергается ручка.

Сообщение от B~Vladi
В соседней теме люди писали что в основном всё понятно с первого взгляда, без доки. Может ты просто не понял самого принципа? Скажи какое конкретно место не понятно.
я сказал сложнее понять, читабельность или ясность. Декларативные шаблоны легче понимать, чем императивные.

Сообщение от B~Vladi
Чем? Так работает весь маркет, все проекты на xscript-те. Только там активная и пассивная части разделены по файлам, у меня же всё вместе.
хм, ну так я и предлагаю разделить активную и пассивную составляющие по разным файлам. А не нравится тем, что это для меня не актуально, я и верстаю и программирую. Мне не надо, чтобы кодера по-меньше дергали. Вот если бы был верстальщик в паре, тогда может быть и возник бы такой вопрос. Вот только не уверен я...
Ответить с цитированием
  #58 (permalink)  
Старый 12.07.2012, 22:46
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
но я бы в любом случае разделил на ошибки программиста и ошибки при обращении к ресурсам
Они разделены, смотри пример выше.
Сообщение от x-yuri
И еще какие-то свои у тебя там исключения, эти я не знаю куда.
Я не знаю уже как объяснять. Мы, походу, о разных вещах говорим.
Вызвал функцию с аргументом - числом. Функция ожидала строку. Либо функция сама падает (например, пытается применить к аргументу метод строки), либо она проверяет тип и выкидывает исключение. Т.е. это то же самое, что и ошибка программиста, о которой ты писал выше.

Что касается ошибок обращения к ресурсам. Сами обращения происходят в недрах логики метода, вызываемого из шаблона, правильно? В ноде принято в callback первым параметром прокидывать объект ошибки, если это имеет место быть. Так вот, допустим в недрах этого метода возникла ошибка обращения к ресурсу и логика метода это отловила. Метод может передать в callback этот объект и уже в шаблоне на уровне разметки это обработается. Пример:

<ten:query method="getOnline" params="error, data">
  <ten:if expr="error">
    <!-- произошла ошибка доступа к ресурсам или ещё что -->
  <ten:else if="data" />
    <!-- всё ок, пришли данные, обрабатываем их -->
  </ten:if>
</ten:query>


Если ты про это говорил, то всё разделено. Если нет - расскажи на примере что ты имел ввиду.

Сообщение от x-yuri
f(1, 2, 3)
Это у меня записывается не так, не стоит надумывать
Тем более, в том же Dust можно вызывать функции и обрабатывать от них результат. Логика таких конструкций ничем не отличается от моего шаблонизатора (см. пример с query, context), кроме синтаксиса самих конструкций.

Сообщение от x-yuri
Которые на самом деле код, императивный код.
Любой шаблон на самом деле код. Тем более в JS. Почему, когда ты пишешь конструкцию в стиле Mu, ты не относишься к этому как к коду? Или я чего-то не до понял?

Сообщение от x-yuri
Для этого надо дергание ручки вынести из шаблона, а в шаблоне принять результирующие данные.
А мне не нравится такой подход. Мне страшно представлять огромное дерево данных. Особенно, когда они максимально соответствуют структуре представления. Пока никаких веских аргументов я не увидел (или плохо смотрел?), кроме религиозных убеждений. Из всего нашего диалога мне больше всего интересно узнать по-че-му надо так а не так? Я правда хочу знать, открой мне глаза

Сообщение от x-yuri
А записывание кода разметкой ничего не меняет, кроме понижения читабельности:
Ох. Ну где я записываю код разметкой? Вызовы методов? If-ы? Циклы? Кстати циклы (итераторы, ага), ифы, вызовы функций есть в каждом приличном шаблонизаторе. Чем мой от них отличается?
А, я понял. Тебе нравятся шаблоны типа:
Код:
<% for (var i; i < array.length; i++) { %>
<% } >
Сообщение от x-yuri
А не нравится тем, что это для меня не актуально
Хм. Поэтому не нравится? Т.е. если мне это не надо - то говно. Так получается?

Сообщение от x-yuri
ну так я и предлагаю разделить активную и пассивную составляющие по разным файлам.
Что это даст? Реального, для работы. Я скажу что даст - лишний этап, который нужно контролировать отдельно. Я каждый день с этим сталкиваюсь и могу сказать - это не удобно. Для меня. Я как раз-таки и хочу совместить эти этапы для упрощения.

Сообщение от x-yuri
Декларативные шаблоны легче понимать, чем императивные.
Требую пример кода декларативного шаблона и аналогичный код из моего, что бы были видны отличия.
Если не использовать некоторые конструкции в моем шаблонизаторе, то он ничем не будет отличаться от Mu или Dust.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 13.07.2012 в 02:06.
Ответить с цитированием
  #59 (permalink)  
Старый 13.07.2012, 03:14
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от B~Vladi
Они разделены, смотри пример выше.
А, меня просто твои "исключения, выкидываемые методами получения данных (ручка)" сбили с толку.

Сообщение от B~Vladi
Я не знаю уже как объяснять. Мы, походу, о разных вещах говорим.
Вызвал функцию с аргументом - числом. Функция ожидала строку. Либо функция сама падает (например, пытается применить к аргументу метод строки), либо она проверяет тип и выкидывает исключение. Т.е. это то же самое, что и ошибка программиста, о которой ты писал выше.
О, отлично объяснил. Я правда такими вещами не заморачиваюсь

Сообщение от B~Vladi
Если ты про это говорил, то всё разделено. Если нет - расскажи на примере что ты имел ввиду.
если это то, о чем я думаю, то я говорил про разделение по файлам. Ну или хотя бы на две части в пределах файла: сначала код, потому - шаблон. А у тебя в перемешку.

Сообщение от B~Vladi
Тем более, в том же Dust можно вызывать функции и обрабатывать от них результат.
О, а как?

Сообщение от B~Vladi
Любой шаблон на самом деле код. Тем более в JS. Почему, когда ты пишешь конструкцию в стиле Mu, ты не относишься к этому как к коду? Или я чего-то не до понял?
есть код с состоянием (императивный) и побочными эффектами, а есть декларативный (функциональный) код.

Сообщение от B~Vladi
А мне не нравится такой подход. Мне страшно представлять огромное дерево данных. Особенно, когда они максимально соответствуют структуре представления. Пока никаких веских аргументов я не увидел (или плохо смотрел?), кроме религиозных убеждений. Из всего нашего диалога мне больше всего интересно узнать по-че-му надо так а не так? Я правда хочу знать, открой мне глаза
1) я не говорю ограничиваться пассивным подходом, я говорю: "мухи отдельно, котлеты - отдельно", шаблон - без кода, код (вид) - без разметки; и я говорю: не надо писать код с помощью разметки (Вовочка, не качайся на папе, он не для того повесился); при этом каждый шаблон+вид могут принимать данные как пассивно, так и активно;

2) моя религия (читабельность, разделение обязанностей) ни чем не хуже твоей (по-меньше дергать кодера);

3) у меня складывается впечатление, что ты все что я говорю (по-крайней мере в последнее время) ты списываешь на религию, это так?

Сообщение от B~Vladi
Ох. Ну где я записываю код разметкой? Вызовы методов?
они самые

Сообщение от B~Vladi
Кстати циклы (итераторы, ага), ифы, вызовы функций есть в каждом приличном шаблонизаторе. Чем мой от них отличается?
и любишь же ты авторитетом давить, не своим, так чужим. Миллионы шаблонизаторов не могут ошибаться? Важно не то, что они что-то реализовали, а почему они это реализовали. Если тебе эта возможность нужна - используй.

Сообщение от B~Vladi
Хм. Поэтому не нравится? Т.е. если мне это не надо - то говно. Так получается?
Сообщение от x-yuri
Мне-то точно не нравится, это у верстаков надо спрашивать...
Точнее кодеров спрашивать. Где я сказал говно? Я говорю, что передо мной не стоят твои проблемы и расскащываю, какие проблемы стоят передо мной. Хотя не то чтобы проблемы, скорее свои приоритеты.

Сообщение от B~Vladi
Что это даст? Реального, для работы. Я скажу что даст - лишний этап, который нужно контролировать отдельно. Я каждый день с этим сталкиваюсь и могу сказать - это не удобно. Для меня. Я как раз-таки и хочу совместить эти этапы для упрощения.
Ну если для тебя это проблема, ее надо решать. Я ж не против.

Сообщение от B~Vladi
Требую пример кода декларативного шаблона и аналогичный код из моего, что бы были видны отличия.
Если не использовать некоторые конструкции в моем шаблонизаторе, то он ничем не будет отличаться от Mu или Dust.
декларативный - в котором если и вызываются функции, то для преобразования, а не получения данных

да, давай приведу пример:
Пример: 1.xml
<?xml version="1.0" encoding="UTF-8"?>
<ten:root xmlns:ten="TEN" xmlns="http://www.w3.org/1999/xhtml">
    <ten:block>
    <ten:query method="getOnline" params="error, data">
        <ten:each object="data" item="user">
            <ten:echo data="user.name" />
        </ten:each>
    </ten:query>
    </ten:block>
</ten:root>


и как-нибудь так:
Пример: 1.mustache
{{#onlineUsers}}
    {{name}}
{{/onlineUsers}}


Пример: 1.js
this.onlineUsers = getOnline();

Последний раз редактировалось x-yuri, 13.07.2012 в 03:43.
Ответить с цитированием
  #60 (permalink)  
Старый 13.07.2012, 03:46
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
А у тебя в перемешку.
Ну да, к этому и стремлюсь.

Сообщение от x-yuri
мухи отдельно, котлеты - отдельно
Мне известно это выражение и цель его ясна. Но я стараюсь смотреть на реальные потребности, в отличии от религии.

Сообщение от x-yuri
Вовочка, не качайся на папе, он не для того повесился


Сообщение от x-yuri
моя религия (читабельность, разделение обязанностей) ни чем не хуже твоей (по-меньше дергать кодера);
Ну моя заключается не только в этом (читай выше). Я пытаюсь объединить оба суждения.

Сообщение от x-yuri
у меня складывается впечатление, что ты все что я говорю (по-крайней мере в последнее время) ты списываешь на религию, это так?
Я больше не знаю как объяснить твою позицию. Я тебе приводил и код и нужды из жизни. Я же не против переосмыслить какие-то вещи, но для этого нужны причины, аргументы. Я готов слушать.

Сообщение от x-yuri
то я говорил про разделение по файлам
Смысл? Что даст? Православным станешь? (ога, я тролль )

Сообщение от x-yuri
и любишь же ты авторитетом давить, не своим, так чужим
Своего нет.

Сообщение от x-yuri
Где я сказал говно?
Ну ты сказал - тебе не нравится. Если ты не в курсе, для меня твоё мнение авторитетно, но нужны основания. Раз не нравится - значит говно, ну или окологовённое состояние.

Сообщение от x-yuri
для преобразования, а не получения данных
Мой шаблонизатор не первый в этом роде и этим пользуются (monolithed, помогай).

Общую суть твоей религии я понял, остается только понять чем она лучше и что она дает как кодеру так и верстаку.

Сообщение от x-yuri
давай приведу пример:
Ну лучше же когда всё в одном месте, рядом. Может тебе просто стоит попробовать?! Я считаю стоит.


Сообщение от x-yuri
О, а как?
Да как и любое другое обращение к свойству. Если тип значения функция - она выполняется. Причем синхронно. А у меня можно и асинхронно. Ни у кого больше такого нет.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 13.07.2012 в 03:54.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript client и server side игры Москва 110 000 Yanazavr Работа 0 25.03.2012 14:16
Помогите с архитектурой приложения epson Общие вопросы Javascript 6 09.02.2012 16:32
ВАКАНСИЯ:Сlient side developer СПБ ElenaJMK Работа 25 19.11.2010 16:24
ошибка XMLHttpRequest при запросе ис-под Isa Server poison jQuery 5 14.04.2010 13:38
Архитектура расширяемого приложения. DeveloperRu Библиотеки/Тулкиты/Фреймворки 2 16.03.2010 23:52