Я пытаюсь отобразить HTML с помощью скомпилированных шаблонов с dust.js в браузере (не на стороне сервера с node.js). Если я скомпилирую шаблон на клиентском javascript, он отлично работает. Если я предварительно скомпилирую шаблон и включу его как тег сценария, как рекомендовано, оператор dust.loadSource приведет к отладчику Chrome, в котором говорится: «Uncaught ReferenceError: nowork не определен», где «nowork» - это имя шаблона. Так что ...Скомпилированная ссылка шаблона не определена при вызове dust.loadSource() в браузере
Этот HTML и скрипт работает:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>This Works</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="dust-full-0.3.0.min.js"></script>
</head>
<body>
<div id="bingo"></div>
<script type="text/javascript">
var templateKey = 'works';
var myView = {"people":[{"name":"Fred"},{"name":"Harry"},{"name":"Linda"},{"name":"Mary"}]};
dust.loadSource(dust.compile("{#people}<br/>{name}{/people}", templateKey));
dust.render(templateKey, myView, function(err, out) {
$('#bingo').html(out);
});
</script>
</body>
</html>
Но это не делает:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>This Doesn't Work</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="dust-full-0.3.0.min.js"></script>
<script type='text/javascript' src="nowork.js"></script>
</head>
<body>
<div id="bingo"></div>
<script type="text/javascript">
var templateKey = 'nowork';
var myView = {"people":[{"name":"Fred"},{"name":"Harry"},{"name":"Linda"},{"name":"Mary"}]};
dust.loadSource(templateKey);
dust.render(templateKey, myView, function(err, out) {
$('#bingo').html(out);
});
</script>
</body>
</html>
Если включен nowork.js файл содержит:
(function() {
dust.register("nowork", body_0);
function body_0(chk, ctx) {
return chk.section(ctx.get("people"), ctx, {
"block": body_1
}, null);
}
function body_1(chk, ctx) {
return chk.write("<br/>").reference(ctx.get("name"), ctx, "h");
}
return body_0;
})();
Может ли кто-нибудь помочь?
Я просто понял, что это может быть связано с тем, что эти файлы не обслуживаются на машине с установленным node.js. Я фактически работаю локально на своей настольной машине. Это оно?
Вы верны. Опущение обработчика loadSource. Я знал, что тебе нужно только пылевое ядро. Мое включение пылеудаления было оставлено после выполнения этапа компиляции в сценарии страницы. Спасибо! – Jim