Предварительная компиляция шаблонов Hogan.js на стороне сервера ASP.NET MVC

Я смотрю Hogan.js через Twitter.

http://twitter.github.com/hogan.js/

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

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

     var template = Hogan.compile($('#seasonsTmpl').html());
     $('#main').html(template.render(data));

Учитывая следующий шаблон:

<script type="text/html" id="seasonsTmpl">

     <ul>
    {{#season}}
        <li>{{.}}</li>
    {{/season}}
    </ul>

</script>

Что я могу сделать для «предварительной компиляции» серверной части с помощью бэкэнда ASP.MVC? Разве это невозможно, поскольку, похоже, это связано с использованием Node.js?


person aherrick    schedule 08.01.2013    source источник


Ответы (1)


У вас есть правильная идея по оптимизации ваших шаблонов. Есть два варианта, и выбор, вероятно, зависит от того, хотите ли вы отображать свои шаблоны на стороне клиента или на стороне сервера.

Если вы хотите отобразить их на стороне клиента, вы можете выполнить настоящую прекомпиляцию с помощью Hogan.js. Да, это не работает в .NET, но я думаю, вы неправильно поняли, когда возможна предварительная компиляция. Вместо того, чтобы ожидать, что это произойдет при каждом веб-запросе или загрузке страницы, вы можете заранее скомпилировать свои шаблоны как часть процесса сборки. Вам нужно установить node и npm, чтобы настроить это, но вам нужно только запустить это локально на вашем собственном компьютере или в сборочном блоке, если вы его используете. Всякий раз, когда вы обновляете свои шаблоны, вы должны снова запускать Hogan, чтобы обновить выходной файл. Скомпилированный вывод будет файлом JavaScript, полным функций, оптимизированных для дальнейшего использования. Эти функции включают строки вашего шаблона, а также логику для визуализации данных в стиле Mustache. Затем вы можете включить выходной файл, как и любое другое включение JavaScript, или включить его с другими источниками для минификации, если вы это сделаете.

Второй вариант - отрендерить шаблоны на стороне сервера. Это отличается от предварительной компиляции, сервер будет компилировать и повторно отображать шаблоны для каждого веб-запроса. Отойдите от Hogan.js и посмотрите на альтернативу .NET, такую ​​как Nustache. Самое замечательное в Mustache то, что он имеет спецификацию и был перенесен на несколько серверных языков.

В этих вариантах есть фундаментальная разница в том, где происходит рендеринг. Возможно, вы даже захотите использовать оба подхода в определенных сценариях, например, если вы хотите отобразить начальную загрузку страницы на стороне сервера с помощью Nustache, но при этом иметь динамические элементы, которые должны отображаться в браузере с использованием шаблонов, предварительно скомпилированных с помощью Hogan.

Дополнительная информация: Nustache на Github

Надеюсь, вы найдете это полезным!

person Will Klein    schedule 13.03.2013