Каким шаблонизатором для Requirejs вы пользуетесь и почему?

Делаю свой первый проект на requirejs.
Встал вопрос выбора шаблонизатора.
Необходимо, чтобы можно было использовать как встраиваемые оптимизатором шаблоны так и динамически подгружаемые. В шаблоне по возможности поменьше не HTML кода.
Например, передаем объект - рендерится 1 объект, передаем массив объектов - рендерятся все. Шаблон при этом не требует изменения и не содержит операторов цикла.
  • Вопрос задан
  • 2523 просмотра
Решения вопроса 2
effetto
@effetto
.Net разработчик
Я использую связку RequireJs, Durandal и KnockOut.

Касательно работы с шаблонами, сама RequireJs с модулем text позволяет грузить текстовые шаблоны. Gulp позволяет оптимизировать загрузку модулей и шаблонов RequireJs в один файл. Knockout позволяет реализовать не только отрисовку шаблонов, но и связывание данных. А Durandal позволяет хорошо структурировать код по модулям.

В данной сборке использование сторонних шаблонизаторов выглядит избыточным для меня.
Ответ написан
Комментировать
@legatdestr Автор вопроса
Всем спасибо!
После проб и ошибок, в этом проекте использовал плагин к Requirejs на основе Handlebars

Кому интересно, подключал примерно так (упрощенный код):
// index.js - settings
requirejs.config({
   //....
    "baseUrl": "js",
    "paths": {
        // .......
        "hbs": "./vendors/require-handlebars-plugin/hbs"
    },
    // hbs settings
    "hbs": {
        disableI18n: true, // This disables the i18n helper and
        // doesn't require the json i18n files (e.g. en_us.json)
        // (false by default)
        disableHelpers: false, // When true, won't look for and try to automatically load
        // helpers (false by default)
        helperPathCallback: // Callback to determine the path to look for helpers
                function (name) {       // ('/templates/helpers/'+name by default)
                    return 'app/templates/helpers/' + name;
                },
        templateExtension: "html" // ('hbs' by default) Set the extension automatically appended to templates
    }
});

//  View:
define(["hbs!app/templates/grid"], function(grid){
     return {
          render: function(dataModel){
                grid(dataModel);
          } 
     }
}

// Template "app/templates/grid" - grid.html

{{#each pages}}
<div class="table">
    <div class="data-rows">
        {{#each rows}}
        <div class="row r{{index}} {{cssClass}}">
            <div class="cabinet">{{formatRoom room}}</div>
            <div class="speciality">{{spec}}</div>
            <div class="fio">{{fio}}</div>
        </div>
        {{/each}}
        <!-- //rows -->
    </div>
</div>

{{/each}} 
<!-- //pages-->
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Wunderbar
Underscore templates
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Я отказался от попыток это воплотить — далеко не для всех шаблонизаторов есть врапперы для AMD, не все умеют компилять на клиентской стороне и т.д., из того, что есть, половина устарела и заброшена, другая половина какой-нибудь хипстотрэш типа moustache.

Делаю либо так: все шаблоны встроены в страницу, при первом вызове компилируются и кэшируются, либо все в Jade, grunt собирает их в AMD-совместимый файлик, который и подключается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы