Сообщение от subzey
|
данные (модель) всегда в бэкенде
|
Сообщение от subzey
|
Зато в моём видении брать посчитанные значения css для элемента не просто некрасиво, а неправильно.
|
Не понял
Сейчас расшифрую, что я имел в виду, а потом расшифруйте вы
Сообщение от x-yuri
|
не зависит, ну и что? Но вид/контроллер может отображать какую-нибудь сводную таблицу на основе нескольких источников
|
Да, ты прав, это тоже причина отделять модель от остального. Со словом "сводную" стало понятно. А то я подумал, что один и тот же вид/контроллер отображают, например, сперва товар, а в следующий момент юзера
Сообщение от x-yuri
|
и давайте если продолжать, то как-то конретнее, на каких-то примерах... ну я выше говорил.
|
Поддерживаю, лучше говорить о конкретных примерах, а то каждый явно думает о своем.
Начну
Мой текущий проект (моя часть проекта) это что-то навроде автокада
(Увы, не могу показывать недоделанный, не решаю таких вопросов
Так что могу только рассказывать словами.) Короче редактор. Объектная модель типичного документа - связанные древовидно и как попало 100-300 объектов 15-ти разновидностей. У документа несколько представлений:
- интерактивный 2D чертеж;
- интерактивный псевдо-3D чертеж;
- труЪ 3D представление (пока еще конь не валялся );
- небольшой read-only эскиз вроде Navigator-а в фотошопе;
- окно свойств выделенного объекта как боковая панель в 3dsmax;
- текстовое таблично-древовидное представление.
Пользователь может их скрывать/показывать как ему заблагорассудится.
Делаю в духе MVC. Так как между объектами M (их свойствами) и элементами HTM/SVG/VML DOM (их атрибутами) нет прямого соответствия, то M - это просто набор JS-объектов, никакой связи с DOM не имеющих. M извещает C об изменениях. C знает, какие Vs видимы (управляет этим), и извещает их. C мог бы извещать Vs и без напоминаний от M, так как он знает, когда M изменилась. Однако из за низкой производительности полные перерисовки Vs недопустимы, и нужно точно знать список изменившихся объектов, и поэтому требуется извещение от M. В этом смысле M активна, но она пассивна в том смысле, что Vs сами берут из нее укзанные данные (тоже из-за производительности). Vs привязывают к событиям DOM (click, change) обработчики, которые преобразуют их в события приложения ("команды": Select, PropertyChange), попадающие в C. C, если того требует команда, вызывает методы M. Не все команды исполняются на клиенте, некоторые требуют запросов к серверу. Всем обменом ведает C, кроме этого он поддерживает undo/redo-стэк, и еще кое какой сервис для Vs вроде панелей инструментов и справки.
Да, и еще! Справочная система - отдельный независимый модуль. В том смысле независимый, что пишется другим человеком, имеет собственный серверный бэкенд и используется также в других частях проекта (которые делают другие люди). Возможно будут еще какие-то модули (реклама однозначно).
Такой вот пример. Короче, приложение смахивает не десктопное и делается как десктопное. Не увидел специфических для веба приемов и явлений (разве что низкая производительность), которые бы заставили отказаться от MVC или существенно его видоизменить. Но может, уважаемый
All что-то посоветует?