Как использовать помощники с Dust.js в локальной среде?

Я программирую с использованием dust-full.js из вилки linkedIn (2.5.1). Я пытаюсь использовать помощники для условных выражений, но не могу заставить их работать. Прямо сейчас я использую свою локальную машину (на данный момент у меня нет намерения включать серверную часть, но, возможно, это то место, куда пойдет этот проект). В настоящее время я тестирую свой код в общедоступной папке Dropbox. Весь не вспомогательный код работал.

Рассматриваемый код:

    {?quote temp="4"}
        Once you have chosen the best answer{@if cond="{temp} > 1"}s{/if}, please select the "Submit" button.
    {:else}
        Choose the best answer{@if cond="{temp} > 1"}s{/if}, then select the "Submit" button.
    {/quote}

Ранее я добавил дистрибутив dust-full.js и помощники, например:

<script src="script/dust-full.js" type="text/javascript"></script>
<script src="script/dust-helpers.min.js" type="text/javascript"></script>

Я видел в других темах и в учебнике по dust.js что нужно было «требовать» помощников. Используя такой код:

var dust = require('dustjs-linkedin');
dust.helper = require('dustjs-helpers');

Однако, когда я включаю это, я получаю сообщение об ошибке консоли: «ReferenceError: требование не определено». Я предполагаю, что это связано с тем, что «require» обычно используется/включается в node.js, но я, честно говоря, не знаю. Я бы предпочел не включать node.js, так как я его не знаю и не заинтересован в изучении дополнительных библиотек. Однако я не знаю, как оценивать помощников.

У меня четыре вопроса:

  1. Есть ли какие-либо очевидные ошибки в коде, который я предоставил?
  2. Доступны ли помощники dust.js только при использовании сценариев на стороне сервера?
  3. (Предположим, что ответ на вопрос 2 — «Нет»). Можно ли использовать помощники только с dust-full.js и dust-helpers.js?
  4. (Предположим, что ответ на вопрос 3 — «Нет»). Как можно использовать помощников, используя только скрипты на стороне клиента?

person Jeff    schedule 13.02.2015    source источник


Ответы (1)


Использование require для загрузки помощников предназначено для серверной среды, такой как Node. Вы должны быть в состоянии сделать то же самое, что и для загрузки хелперов — просто включите их после основного скрипта пыли, и они будут автоматически добавлены к объекту dust.

То, что вы сделали, выглядит правильно, поэтому возможно ли, что вы использовали неправильный путь к файлу Javascript для пылевых помощников?

Вот фрагмент, показывающий работу помощника {@gt}. (Помощник {@if} устарел, поэтому при его использовании вы будете получать предупреждения в консоли, но {@gt} делает именно то, что вам нужно.)

<div id="output"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/dustjs-linkedin/2.5.1/dust-full.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dustjs-helpers/1.5.0/dust-helpers.min.js"></script>
<script>
  var tmpl = dust.compile('Hello World! Choose the best answer{@gt key=temp value=1}s{/gt}', "test"),
      context = { "temp": 4 };
  dust.loadSource(tmpl);
  dust.render("test", context, function(err, out) {
    document.getElementById("output").textContent = out;
  });
</script>

person Interrobang    schedule 13.02.2015
comment
Это супер полезно! Спасибо! - person Jeff; 13.02.2015
comment
Arg, упустил шанс отредактировать. Хотел сказать больше. Я думаю, что проблема, которая у меня была, была с моими каталогами, поэтому я ее уберу. Я попытался запустить его с помощью моего кода с каталогами, которые вы прислали, но я не могу заставить работать параметр temp. Любые предложения о том, как это правильно? У вас есть пример использования этой функции? - person Jeff; 13.02.2015
comment
Я просто подражал вашему примеру. temp - это просто переменная в моем объекте контекста. - person Interrobang; 13.02.2015