"с" и "нет с" в шаблонизаторах

Я нахожусь в поиске движка шаблонов javascript, который имеет хорошую производительность при использовании в больших js-приложениях, а также очень подходит для мобильных приложений. Поэтому я прошел различные jsPerf-тесты для них. Кажется, что есть много результатов, которые показывают разные результаты, и сложно понять, какой тест является стандартным.

Может ли кто-нибудь подсказать мне стандартный jsPerf, на который я могу сослаться, и который также должен включать следующие шаблоны: пыль, подчеркивание, хоган, усы, руль.

  1. Из того, что я заметил, dot.js - постоянный исполнитель с хорошей скоростью рендеринга, но достаточно ли он зрел для больших приложений?

  2. Что такое "с" и "нет с" (характерно для underscore.js), что показано в тестах jsPerf? Может кто-нибудь объяснить.

  3. Во всех тестах, которые я видел, такие популярные шаблоны, как усы, руль, пыль, хоган и т. Д., По-видимому, отстают от производительности по сравнению с другими шаблонами, так почему люди используют их, оставляя без внимания лучшие исполнители, это из-за зрелости этих шаблонизаторов?

заранее спасибо

1 ответ

Решение

Может ли кто-нибудь подсказать мне стандартный jsPerf, на который я могу сослаться, и который также должен включать следующие шаблоны: пыль, подчеркивание, хоган, усы, руль.

Я знаю, не с рук. Это требуется? Зачем?

Нижнее подчеркивание

Что такое "с" и "нет с" (характерно для underscore.js), что показано в тестах jsPerf? Может кто-нибудь объяснить.

С, удобной, медленной производительностью

_.template("<%= myvar %>", { myvar: "foo" });

Не с, Неудобно, Быстрее производительность

_.template("<%= data.myvar %>", { myvar: "foo" }, { variable: "data" });

Лучшее из обоих миров

_.extend( _.templateSettings, { variable: "data" } ); // Do this once.
_.template("<%= data.myvar %>", { myvar: "foo" });
_.template("<%= data %>", "foo");
_.template("<%= override.myvar %>", { myvar: "foo" }, { variable: "override" });

Также обратите внимание, что функция шаблона возвращает скомпилированный шаблон, если второй аргумент является нулевым, неопределенным или не заданным. Так что в случае переопределенной переменной:

var renderFn = _.template("<%= override.myvar %>", null, { variable: "override" });
renderFn({ myvar: "foo" });

Производительность против удобочитаемости

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

Не все в JavaScript связано с производительностью. Должен быть баланс между масштабируемостью, удобством обслуживания, удобочитаемостью и удобством. Эмпирическое правило, являющееся кодом для удобочитаемости и удобства, оптимизирует производительность только там, где это необходимо. Существует SO ветка, которая хорошо обсуждает эту тему.

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

Другие вопросы по тегам