Есть что-нибудь, что я не могу сделать с усами? - PullRequest
6 голосов
/ 22 сентября 2010

Я оцениваю http://github.com/janl/mustache.js

, и я думаю о том, как это будет работать в целом с течением времени.Если я просто строю гигантский объект, достаточно ли усов, чтобы превратить его в любую форму HTML?

Итак, мой вопрос.Есть ли что-то, что усы не могут сделать?

(я думаю, что это просто преобразование дерева из JSON в HTML, но я не уверен, как это проверить или получить достаточно уверенности, чтобы делать ставки против него)

дальнейшие разъяснения

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

Ответы [ 2 ]

8 голосов
/ 22 сентября 2010

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

При оценке чего-то подобного, вместо определения того, что оно может и не может делать, более полезно спросить: «Делает ли это то, что мне нужно, легко» и «делает ли это ошибки, которых я хочу избежать? трудно сделать ".

Например, одним из способов оценки будет то, насколько легко избежать межсайтовых скриптов (XSS) атак. Согласно документации, "mustache.js действительно экранирует все значения при использовании стандартного синтаксиса двойных усов", поэтому похоже, что он помогает предотвратить подобные атаки.

Чтобы лучше оценить его, вам необходимо предоставить более подробную информацию о ваших требованиях. Что ты пытаешься сделать? С чем вам нужно интегрироваться?

редактировать

Даже после вашего разъяснения все еще не совсем ясно, что вы ищете. Даже ограничивая себя расширением одного шаблона Mustache с одним представлением в качестве входных данных, вы можете создать любую произвольную строку и, следовательно, любой произвольный HTML, просто передав эту строку в качестве входных данных.

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

Но оба они - тривиальные ответы; Вы можете создать любой заданный вывод, указав его в качестве входных данных, или вы можете выполнить любое заданное вычисление, используя секцию более высокого порядка. Как я уже говорил ранее, то, что можно сделать с ним, менее интересно, чем то, что легко сделать с ним, и какие ошибки трудно сделать с ним.

Полагаю, одна слабость, которая, возможно, является искомым типом, заключается в том, что если вам нужно больше энергии, чем обеспечивает сама система Усов, вам нужно передать эти функции как часть представления. Таким образом, вам необходимо сопоставить отображаемый объект с кодом, который будет использоваться для его отображения. И если вы удалите возможность вызова Javascript из представлений, которые передаются в шаблоны, то вы сильно ограничите свои возможности. Учитывая тот факт, что эти объекты известны как «представления», кажется, что именно по замыслу вы смешиваете с ними логику представления; это сильно отличается от систем шаблонов, в которых вы позволяете шаблону извлекать значения непосредственно из объектов вашей модели.

3 голосов
/ 22 августа 2011

Да, есть много вещей, которые вы не можете сделать в усы. Усы проще, чем некоторые другие полнофункциональные системы шаблонов (например, в Django). Усы - это очень минимальная система шаблонов, которая поощряет вас (из-за отсутствия функций) реализовывать шаблоны «без логики». Это означает, что некоторую обработку, которую вы можете выполнять в других системах шаблонов, вместо этого следует выполнять в коде, который изменяет данные, отправляемые в шаблон.

Это не плохая система шаблонов, это просто минимальная система, которая стремится быть простой и быстрой.

Итак, я бы сказал, что ответ на этот вопрос таков: «Да, есть некоторые вещи, которые вы не можете сделать в усах (по сравнению с некоторыми другими системами шаблонов)».

...