Как уже упоминалось, существует разница между отступом исходного кода и отступом вывода. Отступ исходного кода может отличаться от отступа вывода, потому что вывод создается динамически. При написании шаблонов важнее всего читабельность исходного кода. Вам следует сосредоточиться на этом в первую очередь! Обычно HTML-отступ в выводе не является проблемой.
Сказав это, есть два практических подхода, чтобы избавиться от несоответствия отступов в вашем выводе:
Одним из примеров первого является Haml , язык шаблонов для Ruby. Требуется такой шаблон:
%body
%h1 I am a Level 1 Header
%table
%tr
%td
%h1 I am a Level 1 Header Inside a Table
Результатом будет аккуратно отформатированный HTML, аналогичный вашему примеру, с правильным отступом.
Одним из очевидных недостатков этого подхода является то, что вы на самом деле не пишете HTML в своих шаблонах, вы пишете на другом языке с семантикой, подобной HTML.Это может быть проблемой, в зависимости от того, кто будет поддерживать просмотры.
В некоторых языках шаблонов есть опции для удаления всех лишних пробелов. В Smarty для PHP есть плагин обрезки пробелов , который, например, прекрасно справляется с этой задачей. Он полностью решает проблему улучшения качества вывода, намеренно делая весь вывод одинаково без отступов. Это также экономит очень незначительную часть полосы пропускания.
Решение только для PHP могло бы заключаться в использовании ob_start ()
с его обработчиком $ output_callback
(который задокументирован здесь ). Вы можете написать простой обратный вызов, который удаляет лишние пробелы, аналогично плагину Smarty. В отличие от использования Tidy в обратном вызове вывода, это по-прежнему позволит вам очистить буфер до конца страницы, чтобы ускорить длинные / медленные страницы.
Я бы сказал, что есть разница между HTML и Source Code отступами. В типичном представлении MVC вы используете исходный код, который, по моему мнению, должен быть отступом, удобным для чтения.
Однако фактический HTML-вывод - это совсем другое дело. Конечно, исходный код с хаотичными отступами выглядит непрофессионально (поэтому я иногда просто удаляю отступы, но это обычно включает, как вы сказали, некоторую пост-обработку HTML), но для самого браузера это не имеет значения, и если мне действительно нужно просмотреть исходный код, я использую форматер или Firebug, который показывает все элементы DOM в хорошем формате.