Посмотрев на исходный код фильтра даты в Angular's filters.js, я заметил, что Angular хранит список месяцев в $locale.DATETIME_FORMATS.MONTH
. Вы можете использовать его для создания очень эффективного фильтра:
var app = angular.module("app", []);
app.filter("month", function($locale) {
return function(month) {
return $locale.DATETIME_FORMATS.MONTH[month];
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<p ng-repeat="num in [0,1,2,3,4,5,6,7,8,9,10,11]">
<span ng-bind="$index + 1"></span>:
<span ng-bind="$index | month"></span>
</p>
</div>
Или отказаться от фильтра и положить его в вместо контроллера:
var app = angular.module("app", []);
app.controller("ctrl", function($scope, $locale) {
$scope.months = $locale.DATETIME_FORMATS.MONTH;
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
<p ng-repeat="num in [0,1,2,3,4,5,6,7,8,9,10,11]">
<span ng-bind="$index + 1"></span>:
<span ng-bind="months[$index]"></span>
</p>
</div>
Или даже в качестве директивы. Это может быть излишним, но HTML выглядит довольно (для меня):
var app = angular.module("app", []);
app.directive("month", function($locale) {
return {
restrict: "A",
link: function ($scope, elem, atrs) {
$scope.$watch(atrs.month, function(month) {
elem.text($locale.DATETIME_FORMATS.MONTH[month]);
});
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<p ng-repeat="num in [0,1,2,3,4,5,6,7,8,9,10,11]">
<span ng-bind="$index + 1"></span>:
<span month="$index"></span>
</p>
</div>
Меня это тоже беспокоит. Лучшее, что вы можете сделать, - это использовать tidy для постобработки текста. Добавьте эту строку в начало страницы (и будьте готовы к хаосу буферизации вывода , когда вы столкнетесь с первой ошибкой PHP с включенной буферизацией вывода):
ob_start('ob_tidyhandler');
Вы не можете получить чистый вывод при встраивании PHP. Я настоятельно рекомендую использовать какой-нибудь шаблонизатор, например Smarty . Помимо чистого вывода, шаблонизаторы имеют то преимущество, что они поддерживают некоторое разделение между кодом и дизайном, повышая удобство сопровождения и читаемость сложных веб-сайтов.
Имеет ли значение "красивый" вывод HTML? Вы будете вставлять выходной HTML-код в редактор всякий раз, когда захотите его просмотреть, и редактор, вероятно, будет иметь возможность отформатировать его правильно (или вам нужно будет сменить редактора!).
Я нахожу предложения по использованию дополнительный язык шаблонов (потому что это именно то, чем является PHP) отвратителен. Вы бы замедляли каждую страницу, чтобы исправить лишнее пространство или вкладку? Во всяком случае, я бы пошел в другом направлении и склонялся к тому, чтобы каждую страницу пропускать через инструмент, чтобы удалить оставшиеся пробелы.
Признаюсь, мне тоже нравится чистый HTML с красивым отступом. часто это получается не так, как я хочу, по тем же причинам, что и у вас. иногда отступы вручную и переносы строк не сохраняются, или это не работает из-за подшаблонов, в которых вы сбрасываете отступ.
и машинам действительно все равно. не о пробелах и не о комментариях, единственное, что их может заботить, - это минифицированные материалы, поэтому дополнительные пробелы и комментарии на самом деле контрпродуктивны. но иногда это так красиво * вздох *
, если firebugs недоступны, мне просто нравится это для отладки. из-за этого в большинстве случаев у меня есть возможность вручную активировать html tidy для текущего запроса. будьте осторожны: tidy автоматически исправляет определенные ошибки (в зависимости от параметров конфигурации),
Если это ДЕЙСТВИТЕЛЬНО важно в вашем конкретном случае, вы можете сделать это ...
<ul><?php foreach($navitems as $nav):?>
<li><?=$nav?></li><?php endforeach; ?>
</ul>
Хотя, на мой взгляд, это хуже, потому что ваш код менее читабелен, даже если HTML такой же вы желаете.
Меня не волнует, насколько чистым будет вывод - это исходный исходный код, который его создал, который должен быть легко проанализирован - для меня как разработчика.
Если бы я исследовал вывод, я пропущу его через приборку, чтобы очистить его, если это потребовалось, чтобы внимательно его рассмотреть - но валидаторам тоже наплевать на лишние пробелы или табуляции.
На самом деле, я больше скорее всего удалит пробелы из выходного HTML, чем вставит какой-либо - меньше байтов на проводе = более быстрая загрузка. ненамного, но иногда это может помочь в сценарии с высоким трафиком (хотя, конечно, сжатие вывода помогает больше).
Несколько раз я приводил в порядок свой вывод для отладки сгенерированного HTML-кода. Я использовал табуляции и символы новой строки ... т.е.
print "<table>\n";
print "\t<tr>\n";
print "\t\t<td>\n";
print "\t\t\tMy Content!\n";
print "\t\t</td>\n";
print "\t</tr>\n";
print "</table>\n";
Просмотр неформатированного источника очень раздражает из-за множества вложенных div и множества записей, каждая из которых содержит эти div.
Я наткнулся на это дополнение для Firefox под названием Phoenix Editor. Вы можете просмотреть исходный текст в его редакторе, а затем нажать «форматировать», и он работает как шарм!
Согласен, Чистый исходный текст очень важен, его хорошо прокомментированный, хорошо структурированный, и его содержание в этих исходных текстах, скриптах или коде очень быстро и просто. Вы должны рассмотреть фрагментацию вашего main, используя require (prior.php, header.php, title.php, content.php, post.php) в соответствующих местах, затем написать новую функцию под prever.php. php, который будет разбирать и компоновать html-тэги с помощью метода взрыва и делителя строк, имеет целое число для индекса табуляции, и всякий раз, когда находится в строке функций, тогда целое-- всякий раз, когда
<
и >
, но не />
и находится в строке целое ++, и все это должно быть размещено правильно..... используйте цикл для перестройки еще одного строкового табиндекса для табуляции содержимого целочисленных времен.
Я делаю это следующим образом:
<ul>
<?php foreach($navitems as $nav):?>
<li><?=$nav?></li>
<?php endforeach; ?>
</ul>
В основном все мои условные выражения и блоки циклов располагаются на одном уровне в пределах представлений. Если они вложены, я делаю отступ внутри начального тега PHP, например:
<ul>
<?php foreach($navitems as $nav):?>
<?php if($nav!== null) : ?>
<li><?=$nav?></li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
Таким образом, я четко вижу логику представления, когда просматриваю код, и это также способствует чистому выводу HTML. Вывод внутри блоков находится именно там, где я их поместил.
Предупреждение: PHP ест новые строки после закрывающего тега ?>
. Это становится проблемой, когда вы делаете что-то вроде вывода внутри блока
.
<pre>
<?php foreach($vars as $var ) ?>
<?=$var?>
<?php endforeach; ?>
</pre>
Будет выведено:
<pre>
0 1 2 3 4 5 </pre>
Это своего рода взлом, но добавление пробела после = $ Var?>
делает его чистым.
Извините за чрезмерное количество блоков кода, но меня это тоже долго беспокоило. Надеюсь, это поможет примерно через 7 месяцев.