Существует ли XSLT-подобная система шаблонов JavaScript? - PullRequest
4 голосов
/ 04 августа 2010

У меня большой кусок глубоко вложенной полуструктурированной JSON, и я хотел бы генерировать из нее HTML.В данный момент я использую jQote2 , но большая часть кода в моих шаблонах имеет дело с динамическим поиском следующего шаблона для отображения и последующим вызовом его.Что такое <xsl:apply-templates> в XSLT, занимает несколько строк с JavaScript и jQuote.Я очень скучаю по возможностям сопоставления с образцом в XSLT.Есть ли какая-либо (шаблонная) библиотека в JavaScript, которая позволяет мне динамически выбирать из данных, какой шаблон отображать?

Вот пример того, что я хочу.Предположим, у меня есть такая структура JSON:

{
  items:[
   {foo:1, bar:2},
   {foo:7, baz:99},
   {foo:8, quux:3}
  ],
  curdate:'2010-07-07'
}

Мне бы хотелось иметь «корневой» шаблон, который отображает поле curdate, а затем отображает элементы.Если элемент содержит поле «bar», я хочу, чтобы элемент отображался с помощью шаблона с именем «tpl-bar» (или чего-то подобного), в противном случае следует использовать шаблон с именем «tpl-foo».Возможности фильтрации (например, «не отображать элементы, имеющие поле quux») были бы полезны.

Мне известна библиотека JSONT , однако из того, что я вижуон недостаточно динамичен, чтобы выполнить то, что я описал.

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

1 Ответ

2 голосов
/ 04 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...