Должен ли HTML сосуществовать с кодом? - PullRequest
7 голосов
/ 15 сентября 2008

В веб-приложении допустимо ли использование HTML в вашем коде (не скриптовые языки, Java, .NET)?

Есть два основных подвопроса:

  1. Следует ли использовать код для печати HTML или иным образом напрямую создавать отображаемый HTML?
  2. Стоит ли смешивать код на HTML-страницах?

Ответы [ 14 ]

13 голосов
/ 15 сентября 2008

Как правило, лучше хранить презентацию (HTML) отдельно от логики («внутреннего» кода). Ваш код отделен и его легче поддерживать таким образом.

5 голосов
/ 15 сентября 2008

Пока ваш код для написания HTML отделен от логики вашего приложения, и HTML гарантированно будет правильно сформирован, у вас все будет в порядке.

Единственный код, который должен быть смешан на страницах, основанных на разметке (то есть на тех, которые содержат буквальный HTML), - это код, используемый для форматирования HTML (например, цикл для выписывания списка).

Существуют компромиссы, независимо от того, вставляете ли вы код в HTML или используете чистый код для записи HTML, используя строковые литералы в кавычках.

1 голос
/ 15 сентября 2008

HTML, который составляет представление, должен быть каким-то образом отправлен в браузер. В .net каждый серверный элемент управления генерирует свою собственную разметку HTML как часть жизненного цикла страницы. Так что да, можно использовать HTML в коде на стороне сервера.

Возможно, вам следует попробовать следовать шаблону ASP.net. Создайте группу элементов управления, представляющих элементы пользовательского интерфейса, и возложите на них ответственность за выдачу собственного HTML-кода в зависимости от их состояния.

1 голос
/ 15 сентября 2008

Смысл в том, чтобы отделить логику дисплея от остальной части кода. На любом сложном сайте вы будете иметь код, смешанный с вашим HTML, но код должен быть только для отображения. Он не должен делать никаких сложных вычислений.

Например, шаблоны будут содержать циклы и условные выражения. Кроме того, у вас, вероятно, будет библиотека специфических для HTML процедур, например, распечатка списка

на основе объекта списка.

Представьте, что вы пишете приложение с двумя режимами вывода: HTML и что-то еще. Как бы вы написали это, чтобы избежать дублирования кода? Это, вероятно, укажет вам правильное направление.

1 голос
/ 15 сентября 2008

Если я правильно понял вопрос, вы спрашиваете, стоит ли смешивать разметку с внутренним кодом. Нет. Хотя это обычно делается, это все еще плохая идея.

Вам следует ознакомиться с парадигмой MVC , а также с существующими вопросами по этому вопросу, такими как Каков наилучший способ миграции существующего грязного веб-приложения на элегантный MVC? и Рекомендации по рефакторингу классического ASP?

1 голос
/ 15 сентября 2008

Нет, если вы хотите создать хорошее и поддерживаемое программное обеспечение и добиться слабой связи.

0 голосов
/ 15 сентября 2008
  1. Я стараюсь избегать использования кода для печати HTML "напрямую" . Сложно поддерживать, редактировать, добавлять стили и т. Д. В некоторых случаях, например, при генерации электронного письма в коде HTML, я создаю текстовый файл или файл HTML с такими маркерами, как [имя], [код подтверждения] и т. Д. Я загружаю это из кода и заменить эти маркеры. Таким образом, вы можете редактировать стиль письма, не перекомпилируя код. На мой взгляд, хорошее разделение "презентации" и "логики" - хорошая практика.
  2. Смешивание кода в HTML обычно не является хорошей практикой по тем же причинам, что и в пункте 1. Тем не менее, я использую код в HTML для таких вещей, как простые динамические строки, которые отображаются несколько раз на странице или страницах. Я думаю, что это лучше, чем создавать несколько серверных элементов управления для одинаковых точных значений для установки. Поскольку это не кодовая «логика», смешанная в HTML, я думаю, что это нормально.
0 голосов
/ 15 сентября 2008

В идеале вы стремитесь к разделению интересов между кодом вашей презентации (UI) и кодом вашей доменной (бизнес-логики).

Причина, по которой вы должны избегать связи этих двух проблем (в любом направлении), проста ...

У вас будет только одна причина изменить часть кода. будь то из-за структурных или стилевых изменений в вашем html-дизайне или из-за изменения бизнес-правил, вам нужно будет внести изменения только в одном месте.

В меньшей степени, хотя многие пуристы не согласятся, разбрасывая HTML-код через код вашего домена или наоборот, вы создаете шум для следующего разработчика, который придет, чтобы прочитать / поддержать его.

0 голосов
/ 15 сентября 2008

Я не думаю, что есть какое-то оправдание для генерирования HTML внутри вашей бизнес-логики. Даже не делайте этого, когда это просто «быстрое исправление» или когда вы «вернетесь и исправите это позже», потому что этого никогда не происходит.

Чтобы подтвердить мою позицию из других вопросов, используя некоторую логику управления (условные выражения, циклы) в HTML, это нормально. НЕ делайте никакого массирования данных или бизнес-логики в HTML. Вы должны быть дисциплинированными, но это того стоит. Техническое обслуживание намного проще, если ваши проблемы (такие как логика и дисплей) разделены.

0 голосов
/ 15 сентября 2008

Я согласен со всеми остальными, что вам следует изо всех сил стараться отделить разметку HTML / XHTML от логики приложения. Однако иногда по разным причинам вам необходимо генерировать HTML / XHTML в логике приложения.

В этих случаях я пытался убедиться, что минимальное количество кода презентации смешано с логикой приложения, и попытаться перенести все остальное в код презентации. Это ничего не стоит, потому что в некоторых случаях у вас есть ситуации, когда все может быть перенесено на уровень представления, но может быть немного проще создать разметку как часть логики приложения. В этих случаях вам лучше всего идти по маршруту, который наиболее целесообразен с точки зрения времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...