Supose у меня есть этот простой, но довольно вложенную шаблон Eco:Как удалить ненужные пробелы из скомпилированного шаблона Eco
<div class="example">
<% for thing, i in @things: %>
<div class="nested">
<% if i % 2 == 0: %>
This block is fairly nested.
<% end %>
</div>
<% end %>
</div>
При компиляции для JS результат является:
function(__obj) {
// ... A couple of auxiliary functions ...
(function() {
(function() {
var i, thing, _i, _len, _ref;
__out.push('<div class="example">\n ');
_ref = this.things;
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
thing = _ref[i];
__out.push('\n <div class="nested">\n ');
if (i % 2 === 0) {
__out.push('\n This block is fairly nested.\n ');
}
__out.push('\n </div>\n ');
}
__out.push('\n</div>\n');
}).call(this);
}).call(__obj);
__obj.safe = __objSafe, __obj.escape = __escape;
return __out.join('');
}
Теперь эта функция (который служит JS клиенту для визуализации на стороне клиента) включает в себя некоторые ненужные пробелы в строках, например ...
`'\n This block is fairly nested.\n '`
... которые не могут быть удалены компрессором JS, потому что они не являются свободным пространством JS (но становятся пустыми в HTML при визуализации). Я понимаю, что Eco компилирует шаблоны таким образом, чтобы сохранить их вывод с превосходным отступом, что очень круто в среде разработки, но не столько на одном из них: D
Есть ли способ удалить лишние пробелы из eco.precompile
вывод?
BTW, я использую Sprockets для компиляции, объединения и обслуживания этих активов.
Я не использовал Eco и не имею немедленной среды, чтобы попробовать что-либо. Вы видите, помогает ли включение нежелательных пробелов в '''? –
Спасибо за предложение @AtesGoral, но, к сожалению, это не поможет, потому что пространства, видимые в JS, выводятся из-за отступов, используемых в шаблоне (я отредактировал мой вопрос, комментируя это). Прежде чем добавлять ненужные блоки комментариев HTML, я бы скорее удалил отступы шаблонов soruce, но это далеко не идеальное решение (вероятно, есть способ удалить их на время компиляции .eco -> .js). – epidemian
Если Eco отличит XML-комментарии, он все равно может работать. Я напишу, что я имел в виду как ответ. –