Я использую Dancer2 для создания веб-приложения. Он отлично работает, но когда я просматриваю исходный код в браузере, сгенерированный исходный код HTML заполнен разбросанными пробелами, например
<tr>
<td>2</td>
<td>Cheeseburger</td>
<td>4.50 €</td>
</tr>
В моих шаблонах был код <% ... %>
в тех местах, где теперь пробелы. Я бы предпочел, чтобы это выглядело так:
<tr>
<td>2</td>
<td>Cheeseburger</td>
<td>4.50 €</td>
</tr>
или еще лучше:
<tr><td>2</td><td>Cheeseburger</td><td>4.50 €</td></tr>
Я использую Template::Toolkit и подумал, что атрибут TRIM
— это именно то, что мне нужно, и добавил его в свой config.yml
:
template: "template_toolkit"
session: "YAML"
engines:
session:
YAML:
cookie_duration: 6 months
template:
template_toolkit:
start_tag: '<%'
end_tag: '%>'
TRIM: '1'
Но это не работает. Я уже изменил start_tag
и end_tag
на что-то другое (чтобы убедиться, что этот файл прочитан), и это действительно сработало. А вариант TRIM
нет.
Я использую неправильный вариант или даю его не в том месте? Все поиски в Google, которые я сделал, показали, как программно установить TT-опции, например. в этом ответе. Но поскольку я явно не создаю экземпляров, связанных с TT, я даже не знаю, куда мне поместить такой код.
Я создал свое приложение с помощью dancer2 -a so
.
представления/index.tt
<table>
<tbody>
<% FOREACH item in group.items %>
<tr>
<td><% item.order_num %></td>
<%# one-line comment %>
<%# one-line comment %>
<%# one-line comment %>
<td><% item.desc %></td>
<%# one-line comment %>
<td><% currency(item.price) %></td>
</tr>
<% END %>
</tbody>
</table>
group.items
— это массив хэшрефов; currency
— это функция для форматирования цены. <%# one-line comment %>
— мой старый код (я перехожу с Handlebars на Dancer2).
lib/so.pm (модуль приложения)
package so;
use Dancer2;
our $VERSION = '0.1';
get '/' => sub {
my $group = {
items => [
{
order_num => 1,
desc => 'Hamburger',
price => 350,
},
{
order_num => 2,
desc => 'Cheeseburger',
price => 450,
},
]
};
template 'index', {
group => $group,
currency => sub { sprintf('%.2f €', $_[0]/100); },
};
};
true;
-
.<%-
и-%>
соответственно. Будьте осторожны, если вы используете это в коде JS, вы можете выстрелить себе в ногу. - person simbabque   schedule 08.12.2016