LINUX.ORG.RU
ФорумTalks

Отчего концепции Web-движков, такие страшные, может дело в html?


0

2

тема не для дев, потому что интересуют филосовские вопросы генерации html из любого яп, а не технические.

Вот допустим у нас есть три идеи:

- фигачим код вперемешку с html, это базовая, стреляет в ногу, в опу и вообще плохо, на клиенте не рендерится, дизайнеры в шоке, короче все плохо

- MVC - круто и прикольно, на каждую страничку три файла (представление.html, код.php, модель.хзчто), соотв. для реальной странички еще js, css, и все это умножить на 3 для шапки и «колонки слева» (т.е. 3 модели три ...), чтобы использовать код повторно приходится копипастить или ваять по 10 моделей, представлений и тп (дробить функционал)

- компонентные - да, мы собираем кучку компонентов как в обычном GUI, а потом движок берет страничку, внедряет в нее js, генерит составной css, тучи кусочков html собирает в кучку и если нам надо сделать шаг в сторону (кнопочку с ajax) то проще застрелиться, нет не потому что это сложно, а потому что приходится ваять на порядок больше кода недели в первом случае (хреначим все в дизайн), особенно приколько связывать js компоненты через серверный код

А где, господа, серебряная пуля то? Ведь GUI давно и качественно научились делать, почему с вебом такие сложности? Может надо выкинуть html? Или научится както иначе с ним работать?

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

использовать код повторно приходится копипастить или ваять по 10 моделей, представлений и тп

Не понял, зачем нужно копипастить? И какие фреймворки, например, компонентные?

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Не понял, зачем нужно копипастить?

ну так как в MVC реализуется повторное использование кода, и дизайна?

И какие фреймворки, например, компонентные?

тебе там ссылка для примера дана, еще например JSF, GWT (да и любые для RIA)

Deleted
()
Ответ на: комментарий от Deleted

ну так как в MVC реализуется повторное использование кода, и дизайна?

Код в модель. Дизайн в шаблоны и хелперы. Что тебе мешает из какого-то элемента сделать компонент и класть везде? Это не противоречит MVC.

Tark ★★
()

На популярном шаблонизаторе <header><?php $show->header; ?></header> Не понимаю что там верстальщикам копаться.

ritsufag ★★★★★
()

Ведь GUI давно и качественно научились делать

Гхм.

baverman ★★★
()

А где, господа, серебряная пуля то? Ведь GUI давно и качественно научились делать, почему с вебом такие сложности?

Даже http://www.w3.org/TR/css3-layout/ ещё использовать нельзя. Глядишь, скоро хотя бы можно будет flex box использовать… Какое GUI? Костыли на костылях. Флоат для layout'ов и 100500 таблиц, написанных руками. Жизнь прекрасна.

Deleted
()
Ответ на: комментарий от abraziv_whiskey

идея, мне нужна идея.

ps. Lingua latina non penis canis est

Deleted
()

Ведь GUI давно и качественно научились делать

Не научились. Что стоит одно переписывание всего кода отвечающего за интерфейс при переносе программы на другую платформу.

Tark ★★
()
Ответ на: комментарий от Deleted

ну так как в MVC реализуется повторное использование кода, и дизайна?

MVC как раз и сделан для повторного использования кода и дизайна. Если страницы похожие, никто не мешает дергать один и тот же шаблон из разных контроллеров. А модель вообще одна, если у тебя есть сущность «пользователь», то нужно сделать один класс «пользователь», не понимаю зачем

ваять по 10 моделей

goingUp ★★★★★
()
Ответ на: комментарий от Tark

код в модель -> 0x0C круг ада для таких программистов

Что тебе мешает из какого-то элемента сделать компонент и класть везде? Это не противоречит MVC.

MVC не противоречит, а прибитым гвоздями к шурупам реализациям противоречит - кроме того многословность никуда не девается, даже в рельсах

Deleted
()
Ответ на: комментарий от goingUp

MVC как раз и сделан для повторного использования кода и дизайна.

неа, он сделан для упрощения поддерживания/разработки и смены V по желанию

Если страницы похожие, никто не мешает дергать один и тот же шаблон из разных контроллеров.

а если похожие на 40% то нет, читд

А модель вообще одна, если у тебя есть сущность «пользователь», то нужно сделать один класс «пользователь», не понимаю зачем

ты путаешь модель страницы и элемент модели 8)

Deleted
()
Ответ на: комментарий от Deleted

а если похожие на 40% то нет, читд

Разбей шаблон на несколько частей, будь мужиком и не ной)

ты путаешь модель страницы и элемент модели

Твое MVC неправильное

goingUp ★★★★★
()
Ответ на: комментарий от baverman

ты путаешь кусок данных который участвует в логике - «пользователь» и _все что нужно для рендеренга представления страницы_ - вот последнее и есть модель в терминах MVC, от «пользователь» там как правило нужен ник и айдишник

Deleted
()
Ответ на: комментарий от goingUp

Разбей шаблон на несколько частей, будь мужиком и не ной)

внимание вопрос - как, если ресурсы подключаются в одном месте html, а часть данных в другом, и «похожее» там размазано по странице (допустим «навигация» которая слева, сверху, в заголовке окна «текущий путь до страницы» и гденить в тексте страницы есть кнопки «назад», «выше» и «далее»)

Твое MVC неправильное

ты просто не знаешь что это такое, ибо то чем тебя кормят не MVC а то мутант для создания html

Deleted
()
Ответ на: комментарий от goingUp

у меня для тебя плохие новости - в каноническом MVC контроллер отвечает только за модификацию модели и все

Deleted
()
Ответ на: комментарий от Deleted

код в модель -> 0x0C круг ада для таких программистов

С чего это? Или ты совершаешь типичную ошибку, описанную в разделе наиболее типичные ошибки на странице MVC в википедии?

MVC не противоречит, а прибитым гвоздями к шурупам реализациям противоречит - кроме того многословность никуда не девается, даже в рельсах

Не понимаю проблемы. Компонент подключается одной строкой, объявляется методом в классе. Где здесь многословность?

Tark ★★
()

Ну всё и идёт к тому, что HTML как таковой не нужен, рендерингом занимается яваскрипт в браузере с помощью DOМ, а с сервером он обменивается данными в виде JSON. Это уже почти мейнстрим. Опоздавший на 10 лет css3-layout тоже становится не нужен, т. к. сегодня проще делать сложные лейауты тем же яваскриптом, просто выставляя геометрию всех элеметнов и перевычисляя её при изменении размеров окна. Как, собственно, делают все десктопные GUI-тулкиты. И нет, это не тормозит. А главное - работает и позволяет делать ВСЁ, в отличие от нерасширяемого CSS. Собственно, CSS как язык тоже становится не нужен, управление внешним видом DOM-элементов делается через их проперти. Вот примерно так. Мне, правда, тоже не нравится превращение старых добрых веб-страниц в стрёмные «веб-приложения», но щито поделать. Возьмите и форкните веб, кому не нравится, я только за.

vasilenko ★★
()
Ответ на: комментарий от baverman

Среднестатистический ТТУК получал данные из БД (используя уровень абстракции базы данных, делая вид, что это модель) или манипулировал, проверял, записывал, а также передавал данные в вид. Такой подход стал очень популярен потому, что использование таких контроллеров похоже на классическую практику использования отдельного php-файла для каждой страницы приложения.

про тебя даже статья в русской википедии есть (хотя я ее считаю хренью) http://ru.wikipedia.org/wiki/MVC

Deleted
()
Ответ на: комментарий от Deleted

внимание вопрос - как, если ресурсы подключаются в одном месте html, а часть данных в другом, и «похожее» там размазано по странице (допустим «навигация» которая слева, сверху, в заголовке окна «текущий путь до страницы»

Я не понял, ты не знаешь, как сделать меню и заголовок страницы в своем жава-фреймворке?

и гденить в тексте страницы есть кнопки «назад», «выше» и «далее»)

выносятся в отдельный шаблон

ты просто не знаешь что это такое, ибо то чем тебя кормят не MVC а то мутант для создания html

Ну я уже понял, что на тебя снизошло просветление, и ты понял истинную сущность MVC

goingUp ★★★★★
()

Чем мешает MVC импорту во вьюху типовых шаблонов? Типа такого:

<#import "blocks.ftl" as blocks />

<!DOCTYPE html>
<html lang="en">
<head>
<@blocks.headers />
</head>
<body>
<div id="wrapper">

<@blocks.top_nav />
<@blocks.header_big />

    <!-- main -->
    <div class="main">
Nagwal ★★★★
()
Ответ на: комментарий от Deleted

про тебя даже статья

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

baverman ★★★
()
Ответ на: комментарий от Tark

С чего это?

с того что логика - это штука которая манипулирует данными.

Или ты совершаешь типичную ошибку, описанную в разделе наиболее типичные ошибки на странице MVC в википедии?

там ошибка про другое - когда контроллер херней занимается

Компонент подключается одной строкой, объявляется методом в классе. Где здесь многословность?

и компонент состоит тоже из строчки кода?

Deleted
()
Ответ на: комментарий от Deleted

внимание вопрос - как, если ресурсы подключаются в одном месте html, а часть данных в другом

Внимание вопрос - какое отношение подключение ресурсов и данных имеет к шаблону?

Tark ★★
()

4. генерировать XML а HTML рендерить XSLT причём можно и на клиенте. Все браузеры поддерживают XSLT.
5. дать дизайнерам нарисовать HTML и так его и отдавать. Голый HTML закэшируется в браузере и будет появляться мгновенно а данные и поведение на JS по запросу.

Есть ещё много вариантов но они как правило комдинация этих 5 вариантов.

Да, есть ещё MVVC

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 1)
Ответ на: комментарий от goingUp

Я не понял, ты не знаешь, как сделать меню и заголовок страницы в своем жава-фреймворке?

ты дейтвительно ничего не понял

выносятся в отдельный шаблон

который смешивается через одну строку с другим да? хаха

Deleted
()
Ответ на: комментарий от Deleted

с того что логика - это штука которая манипулирует данными.

И? Какой код у тебя еще есть кроме манипулирования данными? Может ты неправильно работаешь с формами и прочим, и вместо кастомного валидатора из трех строк пишешь простыни в контроллере?

и компонент состоит тоже из строчки кода?

Смотря какой компонент нужен. Но оверхеда там 0.

Tark ★★
()
Ответ на: комментарий от vasilenko

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

это путь RIA он не применим для нормальных сайтов, и нормальной верстки

а так да рендеринг на клиенте - дело, но текущие фреймворки только среди ria его поддерживают на клиенте

Deleted
()

может дело в html?

Именно. Предлагаю запилить альтернативу.

CYB3R ★★★★★
()
Ответ на: комментарий от Deleted

ты дейтвительно ничего не понял

боюсь тебя понимает только ты

который смешивается через одну строку с другим да? хаха

вот как можно понять эту строчку?

goingUp ★★★★★
()
Ответ на: комментарий от Nagwal

тут понимаешь та же навигация (для примера) - у тебя шаблон навигации участвует в трех местах страницы и тебе надо в каждой странице в трех местах включит «три блока» навигации - это дублирование кода, конечно на практике так делаться не будет но на практике встречаются другие подобные косяки

Deleted
()
Ответ на: комментарий от Deleted

это путь RIA он не применим для нормальных сайтов, и нормальной верстки

Да неужто. Корпорации на самом деле просто мечтают эти «нормальные сайты» превратить в RIA, чтоб даже «Save as...» в браузере не работало. И превращают. Попомни моё слово, через пять лет нормальных сайтов и не останется.

vasilenko ★★
()
Ответ на: комментарий от Tark

а в топике ссылка - там кнопочка требует js и фреймворк позволяет при генерации страницы подключать этот js если в шаблоне юзается этот компонент

Deleted
()
Ответ на: комментарий от Deleted

Я вот чего не понимаю, ты негодуешь по поводу многословности жабских фреймворков или отсутствия серебрянной пули при теоритеческой возможности создания идеального движка?

baverman ★★★
()
Ответ на: комментарий от Deleted

Можно не в шаблон страницы вставлять «шапку», «подвал» и прочее, а в «главный» шаблон с меню и подвалом вставлять шаблон страницы. Это будет то же самое MVC.

goingUp ★★★★★
()
Ответ на: комментарий от grim

4 и 5 фигово индексируются, а с темже MVC на mustache (или как там усы зовут) можно рендерить и на сервере и на клиенте

Да, есть ещё MVVC

имхо он еще многословнее mvc

Deleted
()
Ответ на: комментарий от Deleted

Мне лень читать, но если бы это был симфони, я бы просто сделал компонент и в нем добавлял в список используемых js нужный. Я не понимаю зачем они написали этот ад, но я его не особо читал, я ведь на ЛОРе.
П.С.
Не путай компоненты и partials. У компонента есть еще и контроллер.

Tark ★★
()
Ответ на: комментарий от Deleted

Да не похож веб на гуй. Что ты пытаешься доказать? Не работает тут классическое MVC, ага.

baverman ★★★
()
Последнее исправление: baverman (всего исправлений: 1)

на каждую страничку три файла (представление.html, код.php, модель.хзчто)

Но ведь это неправда. Файлы кода и модели общие с другими страничками.

Tark ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.