2013-07-29 2 views
2

Я недавно нуждался в удовлетворении, и я доволен этим. Но зачем мне this 400+ line plulgin загрузить мои шаблоны ручек? Шаблоны Handlebars могут быть сохранены в html-файле без участия процесса плагинов/конверсий. И если я хочу ... Я могу также загружать их, как это с JQuery/Ajax:Зачем мне нужны плагины для всего, когда я использую requireJS?

$.ajax({ 
    url: '../templates/description.hbs', 
    dataType: 'html', 
    cache: false, 
    success: function(data, status, response) { 
     var template = Handlebars.compile(response.responseText); 
     $('#content').prepend(template(tmplData.description)); 
    } 
}); 

Я ищу способ, чтобы загрузить мои templates.hbs файлы требуют (или, возможно, нет), без использования плагин. Мне не нравится подход ajax выше, потому что он замедляет загрузку страницы.

Мои файлы templates.hbs выглядеть примерно так:

<div class="description"> 
    <h1>{{h1}}</h1> 
    <p>{{p}}</p> 
</div> 

просто строка, не так ли?

+0

Ну, ваш код обрабатывает только случай успеха (И имеет зависимость от 20 KLOC jQuery), 95% всего кода не для успеха, а ошибки. – Esailija

+0

@ Esailija Я честно никогда не испытывал того, о чем вы говорите. Почему такой фокус на случаях ошибок, мой случай с ошибкой (ничего не отображать) или (мы не ___, идите сюда). – dezman

+0

Хорошо, если вы используете библиотеку и получаете только белую страницу, потому что в библиотеке возникла ошибка, будет ли проблема легко найти? – Esailija

ответ

1

Отвечая на вопрос из заголовка вашего сообщения («Зачем мне нужны плагины ...»), а не тот, который находится в теле его («Я ищу способ загрузить мои шаблоны ... «). Может быть, кто-то еще придет и даст ответ на эту часть.

Как вы сказали, вы не нужны плагин для загрузки шаблона, даже если вы используете RequireJS для остальной части управления зависимостями. Тем не менее, есть несколько причин, почему с помощью built-in text plugin или выделенный плагин рулей (как тот, который вы связаны) могут быть полезны:

1 - Обрабатывать текст зависимостей такой же был, как и другие зависимости

Have плагин позволяет сказать, что данный фрагмент кода зависит от модуля а, модуль B, и шаблон X:

require(["moduleA", "moduleB", "text!templateX.html"], 
    function(moduleA, moduleB, html) { 
     // start working with all of it together 
    } 
); 

Но если вы не используете плагин, вы, вероятно, есть еще один слой обратного вызова:

require(["moduleA", "moduleB"], 
    function(moduleA, moduleB) { 
     $.ajax({ 
      url: '../templates/templateX.html', 
      dataType: 'html', 
      cache: false, 
      success: function(data, status, response) { 
       // now do something 
      } 
     }); 
    } 
); 

2 - позволяют фазы, в комплектации/Оптимизация

RequireJS кораблей с r.js optimizer, которые могут Bundle все зависимости вместе и преуменьшать их, чтобы уменьшить количество запросов и их общий размер загрузки.

Если вы используете плагин и синтаксис require/define для определения всех ваших зависимостей, r.js может отслеживать, что необходимо для модуля и связывать вместе. Таким образом, в этом примере я использовал выше:

require(["moduleA", "moduleB", "text!templateX.html"], 

ModuleA, moduleB и templateX может быть сгруппирован вместе в одном файле, а не имеющие три отдельных запросов во время выполнения.

В подключаемом модуле Handlebars, я вижу, что некоторые из этих 400+ строк кода имеют дело с фазой связывания/оптимизации. И, как отметил в комментариях @Esailija, многие из других относятся к случаям краев и условиям ошибки.

Смежные вопросы