это всего лишь мои удивления, и я подумал, что поделюсь ими ...
Проще говоря, MVC - это шаблон для отделения содержимого (модели) от представления (представления) и наличия механизма (контроллера), определяющего, как собирать и то, и другое.
Если вы уже видите, к чему я клоню, мне очень интересно услышать ваше мнение по этому поводу. Конечно, MVC применяется к серверной механике и прочему, но подумайте здесь со мной на секунду нестандартно.
«Посетители» Интернета, как люди, так и роботы / Google, скорее всего, увидят HTML и то, что с ним связано. Написание структурированного и содержательного HTML вместе с отделением его от презентации с помощью CSS с годами стало более важным, и будущие технологии, такие как HTML5, только вносят свой вклад в это разделение, предлагая более ориентированный на контент набор элементов и механизмы для работы с чистое визуальное представление.
Учитывая все это, мне было интересно, будет ли правильно в некотором смысле сказать, что парадигма MVC применима и к интерфейсу, где:
Имеет смысл? Нет?
Спасибо,
Мартин
Обновление: VonC указал мне на статью, которая определенно изменила мои мысли о контроллере. Браузер также занимает большую часть контроллера, поскольку он обрабатывает большую часть взаимодействия с пользователем и то, как модель и представление работают вместе.
Это действительно должна быть вики сообщества. Это больше дискуссия, чем вопрос.






Согласен, хотя про контроллер можно поспорить.
Джефф показывает, что указать в своем посте с ZenGarden
С:
Собственно, это верная перспектива сторона клиента.
От сторона сервера (сервер более сложный, чем простой сервер html-страницы) MVC был бы другим.
Это сервис-идеальная перспектива MVC
Спасибо за статью VonC. Это правда, что браузер является основной частью контроллера, поскольку он обрабатывает большую часть взаимодействия и ввода. Спасибо что подметил это.
CSS - это определенно не представление. Скорее визуализация браузером (который объединяет ввод HTML / DOM и CSS в 2-мерный макет) - это представление. HTML / DOM - это модель. Контроллер наполовину встроен в пользовательский интерфейс браузера, но может быть расширен с помощью javascript.
Верно, что CSS считается уровень представления, когда речь идет о разделении контента / представления, однако это другая (ортогональная) модель.
В MVC CSS является частью модели вместе с HTML / DOM, потому что это базовые данные, которые могут отображаться в разных представлениях. Например, макет печати - это отдельный вид, основанный на одной и той же модели.
Нет, вроде ...
Ваш HTML также находится на уровне представления (представление), хотя ваш CSS должен содержать особенности представления, такие как шрифты, цвета и т. д.
Ваша модель должна содержать ваши данные + бизнес-логику, и я действительно не надеюсь, что вы захотите хранить их в HTML - это для реальных языков программирования, хранимых процедур и СУБД. И они должны быть на стороне сервера.
Но, следуя вашему образу мышления, я бы посоветовал:
Я понимаю что ты имеешь ввиду. Но с точки зрения посетителя (пользователей и Google), не могли бы вы предположить, что html в чистом виде может рассматриваться как Модель сам по себе (оставляя бизнес-правила и тому подобное за рамками)?
Я понимаю вашу точку зрения, но я бы описал HTML-CSS-Server / Browser больше как Document-Viewer, а не MVC. Если все содержимое статично, то это выражение модели, правда, но модель встроена в разметку. Несмотря на то, что я могу переопределить его с помощью CSS, на самом деле CSS - это просто фильтр для базовой презентации, описанной в HTML. HTML описывает представление данных, а также сами данные. То есть, я могу отключить CSS, но все еще могу просматривать данные. В MVC это невозможно.
Также существует тесная связь между вашим HTML и CSS - оба должны хорошо понимать друг друга. Это нарушает ключевую парадигму MVC, в которой компоненты слабо связаны. В частности, представление не накладывает никаких ограничений на модель (кроме ограничения на возможность просмотра данных). HTML-дизайнеры вынуждены работать в домене CSS или изменять CSS, чтобы сделать его применимым к домену HTML.
Кроме того, HTML не может работать с данными для внесения постоянных изменений. Ключевым аспектом модели является способность обеспечивать соблюдение бизнес-правил. HTML не делает этого со статическим содержимым - веб-дизайнер делает это путем выбора кодировки HTML.
Это не делает его плохим или бесполезным. Не все должно быть MVC. MVC просто описывает один конкретный способ организации ваших данных и кода. Он имеет некоторые особые преимущества в отношении несвязанной архитектуры и тестируемости, но это не означает, что это единственный доступный действительный архитектурный шаблон.
Статический HTML-контент, на мой взгляд, не является MVC, и в этом нет необходимости.
[EDIT] Я не утверждаю, что вы не можете использовать MVC в дизайне браузера или что MVC неприменим для отображения статического контента в браузере. Я действительно смотрю на это с точки зрения поставщика контента, а не программиста браузера. MVC может быть совершенно логичным выбором для дизайна браузера.
Обычно MVC можно найти во всем, если присмотреться.
Просто добавлены перспективы на стороне клиента и на стороне сервера. Пожалуйста, просмотрите его: вы можете решить, является ли это все еще "действительным" ответом на ваш вопрос;)