Экспресс-рендеринг с использованием полосок HBS (потребляет?) - PullRequest
4 голосов
/ 27 августа 2011

Использование Express с HBS от Don Park в качестве движка представления с намерением использовать один и тот же шаблонный стиль как для клиентского, так и для серверного кода. Однако я наткнулся на небольшую загадку.

При показанном здесь index.hbs

<h1>{{title}}</h1>
<p>Welcome to {{title}}</p>

<div id="place"></div>

<script id="firstTemplate" type="text/x-handlebars-template">
  <ul>
    {{#lines}}
      <li>{{name}}</li>
    {{/lines}}
  </ul>
</script>

Вот что отображает браузер:

<h1>Express</h1>
<p>Welcome to Express</p>

<div id="place"></div>

<script id="firstTemplate" type="text/x-handlebars-template">
  <ul>

  </ul>
</script>

Процесс рендеринга Express View, похоже, использует блок шаблона, предназначенный для использования в браузере. Насколько я могу судить, средство визуализации представлений просто принимает весь файл file.hbs в качестве строки для отображения, не отделяя блок скрипта от представления сервера.

Какие-нибудь идеи / обходные пути для этого?

Ответы [ 3 ]

1 голос
/ 14 апреля 2012

Если руль действительно совместим с усами, то это должно сработать:

Сначала измените разделитель, поместив его где-нибудь вверху вашего шаблона (перед любыми заполнителями шаблона)

{{=<% %>=}}

Итак, теперь все, что вы хотите визуализировать сервером, вы будете делать:

<% foo %>

И все, что вы хотите визуализировать на клиенте, примерно так:

{{ bar }}

Дополнительная информация находится внизуруководство по усам здесь - http://mustache.github.com/mustache.5.html

1 голос
/ 23 сентября 2011

Я использую руль таким же образом и столкнулся с той же проблемой.

Я обошел это, сохранив эту часть:

<script id="firstTemplate" type="text/x-handlebars-template">
  <ul>
    {{#lines}}
      <li>{{name}}</li>
    {{/lines}}
  </ul>
</script>

В отдельном статическом файле с последующей загрузкой через ajax после отображения страницы. Таким образом, мой клиентский шаблон не будет по ошибке обработан Express.

Было бы неплохо, если бы был способ добавить тег, чтобы Express мог игнорировать подобные блоки и оставлять их на стороне клиента.

0 голосов
/ 08 сентября 2016

Для руля вы можете использовать обратную косую черту, чтобы убрать двойные скобки, например:

<script id="firstTemplate" type="text/x-handlebars-template">
  <ul>
    \{{#lines}}
      <li>\{{name}}</li>
    \{{/lines}}
  </ul>
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...