Здравствуйте, bnk, Вы писали:
A>>Ещё этого не хватало. Мы же не говорим про бедных Qt'ров, у которых один язык на всё, в том числе для БЛ и управления разметкой.
bnk>Наверное тут у нас недопонимание. Я имел в виду сервисов во фронтенде (в браузере, то есть).
А в чём недопонимание? Для веб-приложения (с разделением на фронт и бэк) бизнес-логикой будет реализация на сервере какого-нибудь API.
А для десктопного приложения бизнес-логикой будет, скажем, операции над документами (например, copy-paste).
Если десктопное приложение писать на Qt, то у них вообще один язык на всё про всё. И для управления разметкой, и для реализации бизнес-логики. И ещё не всегда они разметку вообще пишут, вот где самый-то ужас.
Недопонимание может быть вызвано тем, что для меня разметка это не фронт, а UI. А уж какой он там, этот UI, фронтовой или десктопный, это отдельный вопрос. И бизнес-логика не перестаёт быть бизнес-логикой, хоть она документы обрабатывает, хоть на серверной базе висит.
bnk>Смешение кода и разметки подразумевается в той части функциональности, которая пользователю видна (view, визуальные компоненты, по-разному может называться)
bnk>Смешение в том смысле, что в разметке разрешено использовать функции и переменные. IMHO, это сильно упрощает код и позволяет избежать ненужных приседаний.
A>>>>Я помню, как в прошлый раз я буквально замучился тебе объяснять, что переменные, которые повторяют семантику содержимого, это нарушение DRY.
bnk>>>Хм я вроде бы не говорил что код должен повторять разметку, или?
A>>В прошлый раз я говорил, что кешировать запрос к DOM в переменной, чьё имя повторяет селектор, это денормализация. Чтобы её избежать, умные люди придумали чейнинг.
A>>А в этот раз у тебя прямо разметка поименована. Хотя к ней это соображение относится так же, как и к селекторам. А шаблон может быть анонимным. Если он сам себя описывает, зачем его именовать? Чтобы забывать переименовывать при рефакторинге?
bnk>Это не у меня, это просто компоненты. Оно сейчас в любом фреймворке подобным образом выглядит, даже в тех которые как-то пытаются отделять шаблоны явно (angular, vue)
bnk>Декомпозиция, чтобы можно было строить приложение из больших блоков. Переименовывается все давно автоматически само (вместе с разметкой понятно).
Я вот сейчас такую вещь напишу, только не обижайся, пожалуйста.
Вся культура современного фронта — это культура закомплексованного быдла.
Помнишь картинку с Карлсоном: "Ты чё, пёс, я YAML-девелопер!"?
Вот они так же комплексуют, как Карлсон. Если они не прихерачат к чему-нибудь Джаваскрипт и не напишут на нём императивный код, они чувствуют себя... кем? Верстальщиками, что ли? А как же высокая зарплата? За что её просить? И поэтому творят дикие вещи. Возьми автоматизацию деплоя, какой-нибудь gulp или pug. Это же как надо на всю голову стукнуться, чтобы оформить её как "таск-менеджер" с программируемыми императивно задачами? Кагбе, да, это гибкость, но она нужна в таких масштабах? Почему не сделать DSL? Да потому, что потом придётся кричать: "Ты чё, пёс, я YAML-девелопер!".
Другой пример. Для того, чтобы получить адаптивные пиксели (зависящие от размера строки в настройках юзера), я пользовался одно время LESS и такой записью:
20/@rem. Но оказалось, что она слишком конфликтует с современным CSS. Этот п..р (в смысле, препроцессор, а не то, что ты подумал) заменял
grid-column: 1/7; на
grid-column: 0.142857142857143;. А если поставить математике parens-режим, придётся писать
(20/@rem), что портит всё изящество замысла. И что ты думаешь пришлось в итоге сделать? Конечно же, взять Джаваскрипт и нахерачить вот такое вот нечто:
registerPlugin
(
{
install: function (less, pluginManager, functions)
{
functions.add('rp', function (rpx)
{
return new tree.Dimension(rpx.value / 16, 'rem');
});
}
}
)
Иначе простейшее именованное (именованное — чтобы не конфликтовать с
grid-column: 1/7;, в данном случае —
rp, чтобы писать
rp(20)) преобразование в виде деления там не организовать.
Я бы рученьки бы им всем поотрывал по самую жопоньку.
Что касается меня, я пишу на C++ разные ОС-зависимые куски, и иногда дописываю функционал браузера. Откуда у меня возьмутся комплексы? Мне, наоборот, хочется всё сделать попроще, и желательно без программирования. По возможности, голые декларации. У меня нет навязчивой идеи затащить Джаваскрпит в HTML, чтобы меня верстальщиком не заменили.