Рули, загрузка внешних файлов шаблонов
Моя цель - поместить все мои шаблоны Handlebars в одну папку, вот так:
templates/products.hbs
templates/comments.hbs
Я нашел этот фрагмент в нескольких местах с помощью беглого поиска в Google, который, очевидно, будет загружать шаблоны Handlebar во внешние файлы, что имеет гораздо больший смысл, чем помещение нескольких шаблонов в один индексный файл.
(function getTemplateAjax(path) {
var source;
var template;
$.ajax({
url: path, //ex. js/templates/mytemplate.handlebars
cache: true,
success: function(data) {
source = data;
template = Handlebars.compile(source);
$('#target').html(template);
}
});
})()
Проблема в том, что я не понимаю эту функцию или как ее использовать. Почему вся функция заключена в скобки и затем вызвана функцией? например(function x() { ... })()
Я не знаю, что это делает.
И если я не ошибаюсь, выглядит$('#target')
закодировано, когда это не должно быть. Кроме того, не должно ли это установитьdata
переменная где-то, так что переменные, указанные в шаблоне, будут работать ?? Кажется, правильная функция должна быть:
function getTemplateAjax(path, target, jsonData) {
var source;
var template;
$.ajax({
url: path, //ex. js/templates/mytemplate.handlebars
cache: true,
success: function(data) {
source = data;
template = Handlebars.compile(source);
$(target).html(template(jsonData));
}
});
}
Примечание: если бы кто-то мог указать мне на лучший шаблонизатор, который на самом деле изначально поддерживает внешние файлы шаблонов и лучше организован, чем Handlebars, я был бы вечно благодарен.
Другая проблема: я не могу назвать свои файлыmytemplate.hbs
потому что, когда происходит вызов Ajax, он видит его как двоичный файл и проходит как двоичный файл. Я полагаю, что это проблема установки типа mime сервера для .hbs в text / html или text / plain, но проблема в том, что это сервер Grunt, и я не уверен, как изменить его типы mime.