powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Шаблонизация ...
25 сообщений из 119, страница 1 из 5
Шаблонизация ...
    #39586198
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это 21112175 сравнение как источник раздумий по шаблонам и их применению, о котором многие твердят.
Не будем рассматривать виртуального коня в вакууме, а возьмём конкретное применение — ось разработки - окна, ось продакшена — линуксы. Сервер приложений — котяра. Соответственно язык — java.
Читабельность кода — в приведённом шаблоне имеется раскраска текста. Это будет если для написания такого шаблона использовать специализированный редактор. Если этот шаблон поместить в код java – эта раскраска пропадёт, это будет простая строка , появятся дополнительные кавычки, плюсы для соединения при переносе строк. При наличии кавычек надо учитывать дублирование кавычек, или знак «\» соответственно читаемость падает в разы.
Учитывая, что skyANA, не является практикующим java-программистом, но смог прочитать и рефакторить код на чистой java, и что написанный им шаблон тоже надо суметь прочитать, даже при раскраске (не говоря о не раскрашенном варианте) — можно сделать вывод что аргумент с «плохой читабельностью» можно забыть.
Есть вариант — подготавливаем шаблон в отдельном редакторе с раскраской и переносим в код java -это куча действий, но только один раз, при создании, при исправлении — мало кто захочет этот путь повторять.
Храним шаблон в отдельном файле — редактируем спецредактором — наглядность , раскрашеность. Что с ним делать?
Вариант: файл храним в проекте. Как используем? В коде, где нужно его применить читаем файл. Файл текстовый прочитаем в StringBuilder, начнем менять «спецвставки» на нужные, т. е. начнём работать со строками, работа со строками, даже StringBuilder (поиск,вставка, замена) операция очень не быстрая — огромная потеря времени, если учесть что такой шаблон будет вызван 500+ раз… Пагинация сокращает до 50+ раз, но в любом случае необходим вариант полного отображения данных, т. е. вызов 500+ раз.
Есть вариант использовать Singleton загрузить этот файл один раз, в рантайме при старте вызвать компилятор , сформировать из этого шаблона класс, скомпилировать класс , загрузить его и вызывать… Оно того стоит? А если таких шаблонов по 5+ на каждую страницу?
Пусть будет отдельный файл/ы. Первоначально он обработан/ы в Singleton. Простому пользователю приспичило его править — т. е. мы даём права «простому пользователю» на доступ в папку сервера? Хорошо, не «простой пользователь» - а программист, он правит шаблон. Значит в проекте должен появиться механизм отслеживающий изменения версий шаблонов, что бы при изменении подхватить и скомпилировать. Оно того стоит?
Берём вариант текстовая строка в коде. Закрываем глаза на неудобство связанное с не раскрашенным текстом, используем предкомпилятор, который перед компиляцией сделает нужное. Ну будет работать быстро? Возможно, не известно что сгенерирует предкомпилятор… Есть выйгрыш? В чем? В читаемости? Маловероятный. В отладке? Если в чистом варианте ide сразу показывает все описки синтаксисе, то это же мы сможем понять только при запуске компиляции при работе предкомпилятора. Это увеличение времени разработки , да и при изменении/правки — тоже не мало времени уйдет. Вместо того чтоб исправлять ошибки при наборе — многократно запускать компиляцию. Опять таки «простой пользователь» не при делах.
Аргумент — простой пользователь может изменять шаблон.
В приведённом примере что может изменить пользователь? Добавить классы для расцветки? Ширины столбцов? Код основан на результатах работы хранимки — там много что вычислено именно в хранимке (точнее в селекте этой хранимки) благодаря чему много что удалось убрать из кода java. Если эту обработку перенести в java, то мало вероятно что кто-то сможет сделать такой шаблон как сделал skyANA, это будет кусок обыкновенного кода java. С кучей переменных, обработкой строк. Поместить текст хранимки в код? Это огромная строка , в коде будет не читабельна, править и проверять — дело долгое и не благодарное, в отличии от кода хранимки в предназначенном для этого ide. Да и «простой пользователь» который, который будет разбираться в sql коде и коде java - это уже программист.
Для того чтоб простой пользователь мог менять шаблон — шаблон должен находиться вне проекта. Потому как при деплое проекта всё что изменил «простой пользователь» (при нахождении шаблона в проекте) будет похерено.
Хранить шаблон в базе — можно, но тогда нужен специальный механизм для того чтоб «простой пользователь» мог его достать из базы исправить и положить обратно. И опять — что он может поправить для конкретного примера?
«Простой пользователь» должен понимать язык построения шаблона, понимать что за поля используются в качестве условий, в качестве данных. Это будет уже не простой пользователь, да и для понимания ему надо подготовить хороший мануал. Нормальный программист, как показала практика, сделал это «с листа».
Да есть задачи , в которых «простой пользователь» должен менять шаблон . Эти шаблоны должны сохраняться при деплое, разработчик должен видеть и проверять изменения кода с ними, т. е. необходимо иметь копию пользовательских шаблонов у разработчика, но это отдельная тема для разработки. Данный код не попадает в эту категорию.
Если я что-то пропустил — прошу разъяснить.
Это не критика использования шаблонов, это попытка разобраться.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586206
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяЭто не критика использования шаблонов, это попытка разобраться.какой шаблон вы изучили сами в java?
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586210
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяjava, то мало вероятно что кто-то сможет сделать такой шаблон как сделал skyANA,
Не перетаскивай имена между ветками ЯП в таком контексте.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586212
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123какой шаблон вы изучили сами в java?никакой, поэтому и спрашиваю.
был однажды предложен - но он в разделе предкомпиляции, что включено в данном описании.
пока кроме слов надо использовать - я ни чего не видел, ни одного варианта шаблонизации
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586214
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Не перетаскивай имена между ветками ЯП в таком контексте.это не укор кому-нибудь, не надо вырывать из контекста.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586228
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяникакой, поэтому и спрашиваю.
У меня отличная память. Около года назад предлагал Blazkowicz.
Дай ссыль.
Изучил?
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586231
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпока кроме слов надо использовать - я ни чего не видел, ни одного варианта шаблонизациинужно наоборот, попробовать хотя бы jstl и потом разговаривать.
Либо идти в js и там пробовать.
Ты пытаешься оспорить сам паттерн. Это глупо. IMHO.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586240
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123У меня отличная память. Около года назад предлагал Blazkowicz.напомни , может у меня с памятью проблемы..
Petro123нужно наоборот, попробовать хотя бы jstl и потом разговаривать.jstl это сервлеты, я про чистый java.
Petro123Либо идти в js и там пробовать.что там пробовать? мне нужно java а не javascript
Petro123Ты пытаешься оспорить сам паттерн. Это глупо. IMHO.где ты видел оспаривание? я изложил свой взгляд. если в нем что-то не верно - прошу конкретно показать что.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586250
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяв приведённом шаблоне имеется раскраска текста. Это будет если для написания такого шаблона использовать специализированный редактор.
Это общераспространенная практика IDE поддерживать шаблоны. IntelliJ IDEA умеет все наиболее популярные в Java.
Например поддержка Velocity была уже лет 15 назад в популярном на то время HTML дизайнере (имя забыл).

вадяЕсли этот шаблон поместить в код java – эта раскраска пропадёт
Если на ламборджини вылить ушат помоев, то будет вонять. Вывод - машина говно. Что значит "поместить шаблон в код Java"? Кроме тебя в литералы никто никакой логики не пишет уже лет 20. Всё только борятся с таким. Например до сих нужно свойства в JPA/Hibernate в литералах писать. Это плохо.

вадяЕсть вариант — подготавливаем шаблон в отдельном редакторе с раскраской и переносим в код java -это куча действий, но только один раз, при создании, при исправлении — мало кто захочет этот путь повторять.
Няня, я у них поел. Вопрос остаётся открытым - зачем шаблон в Java коде, а не в ресурсах проекта.

вадяХраним шаблон в отдельном файле — редактируем спецредактором — наглядность , раскрашеность. Что с ним делать?

То же что и все. Редактируем в IntelliJ IDEA.

вадяВ коде, где нужно его применить читаем файл. Файл текстовый прочитаем в StringBuilder, начнем менять «спецвставки» на нужные, т. е. начнём работать со строками, работа со строками, даже StringBuilder (поиск,вставка, замена) операция очень не быстрая — огромная потеря времени, если учесть что такой шаблон будет вызван 500+ раз… Пагинация сокращает до 50+ раз, но в любом случае необходим вариант полного отображения данных, т. е. вызов 500+ раз.
Блин. Что за бред. Любой шаблонизатор идёт с API. Загрузить шаблон. Скормить ему данныее. Получить результат. 3 простых шага - три метода.

вадяЕсть вариант использовать Singleton загрузить этот файл один раз, в рантайме при старте вызвать компилятор , сформировать из этого шаблона класс, скомпилировать класс , загрузить его и вызывать… Оно того стоит? А если таких шаблонов по 5+ на каждую страницу?
Это всё за тебя делает библиотека. Что за цифры с потолка. 500, 5? В любом случае говнокода будет меньше.

вадяПусть будет отдельный файл/ы. Первоначально он обработан/ы в Singleton. Простому пользователю приспичило его править — т. е. мы даём права «простому пользователю» на доступ в папку сервера?
Ты зачем приплетаешь вопросы к теме не относящиеся. У тебя простые пользователи и Java код на сервере правят? Или что? Уже давно практика показала что пользователям нельзя давать ничего редактировать, если ты не CMS - то есть целенаправленный редактор.

вадяХорошо, не «простой пользователь» - а программист, он правит шаблон. Значит в проекте должен появиться механизм отслеживающий изменения версий шаблонов, что бы при изменении подхватить и скомпилировать. Оно того стоит?
Velocity умеет. JSP умеет. А ты Java код тоже на горячуе меняешь и сразу через JRebel публикуешь на сервер?

вадяБерём вариант текстовая строка в коде. Закрываем глаза на неудобство связанное с не раскрашенным текстом, используем предкомпилятор, который перед компиляцией сделает нужное. Ну будет работать быстро? Возможно, не известно что сгенерирует предкомпилятор… Есть выйгрыш? В чем? В читаемости? Маловероятный.
Очень субъективное ничем не обоснованое утверждение. Да, шаблон отдельно, код отдельно. Править удобнее когда всё отдельно, а не намешено в кучу, потому что в когда у тебя всё вперемешку и надо вдруг поменять layout HTML страницы, то тебе не только твой HTML нужно менять, но и кучу говнокода, чтобы склеить его в другом порядке. А с шаблонами такой проблемы нет.

вадяВ отладке? Если в чистом варианте ide сразу показывает все описки синтаксисе, то это же мы сможем понять только при запуске компиляции при работе предкомпилятора. Это увеличение времени разработки , да и при изменении/правки — тоже не мало времени уйдет. Вместо того чтоб исправлять ошибки при наборе — многократно запускать компиляцию. Опять таки «простой пользователь» не при делах.
Какой ещё "предкомпилятор". Ты столько всего мешаешь в одну кучу, что обозначить одну проблему не возможно.
Ты всё ещё забываешь, что железо стоит на много дешевле работы программиста. Тебе, как программисту, конечно же, выгодно плодить говнокод, чтобы потом долго и упорно его поддерживать. Но бизнесу это не выгодно. Ему выгодно купить железку и запускать на ней простой код, который может быть на пару процентов и медленее твоего (что ещё нужно доказать).

вадяАргумент — простой пользователь может изменять шаблон.

Не аргумент. Либо мы пишем CMS, либо простой пользователь не может. Без вариантов.

вадяДа и «простой пользователь» который, который будет разбираться в sql коде и коде java - это уже программист.

Всё верно. Одно только не могу понять. У тебя "простые пользователи" конкатенацию правят? Если нет, то к чему вообще этот аргумент?

вадяЕсли я что-то пропустил — прошу разъяснить.
Это не критика использования шаблонов, это попытка разобраться.
Классы. Абстракные слои. MVC. Микросервисы. Уже десятки лет индустрия борется за то чтобы разделять всё что можно разделить. И причина на то одна единственная - инкапсуляция. Строгий юнит, имеющий один стиль и одну задачу просто редактировать.

Стоимость разработки в свете постоянно изменяющихся требований к системе это единственный важный критерий выбора из всех перечисленных. И быстро наговнокодить в этот критерий никак не укладывается. Потому что быстронаговнокоженое править больно и долго.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586266
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадянапомни , может у меня с памятью проблемы..страниц 10 в топике протупишь, найду)
....
Во какой у тебя спитч без абзацев, такой и код со склейкой строк.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586268
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Во какой у тебя спитч без абзацев, такой и код со склейкой строк.
Может там были абзацы, а говнопарсер съел? Лучше выделять их, пустой строкой, а не отступом.
И я бы попросил вопросы писать в конце абзаца отдельно. Трудно их выуживать в середине текста, когда текста много.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586270
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
спасибо за развёрнутые ответы.
многие из них можно переправить моим оппонентам. некоторые косвенно подтверждают моё мнение.
с некоторыми не согласен.
я так понимаю других вариантов ответов не существует?
тогда тему можно зарыть.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586272
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczМожет там были абзацы, а говнопарсер съел? Лучше выделять их, пустой строкой, а не отступом.
И я бы попросил вопросы писать в конце абзаца отдельно. Трудно их выуживать в середине текста, когда текста много.
согласен.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586298
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадямногие из них можно переправить моим оппонентам. некоторые косвенно подтверждают моё мнение.))
Ну дак из нас максималист только ты. Все оппоненты кричали тебе что иструменты по месту и задаче.

вадяя так понимаю других вариантов ответов не существует?
После шаблонов в веб пришел компоненный подход.
вадятогда тему можно зарыть.
И тебе шаблоны не изучать)))))
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586310
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ну дак из нас максималист только ты..не я не максималист, это skyANA мне мозги проел про шаблоны для обычных пользователей.
Petro123И тебе шаблоны не изучать)))))ну почему так критично.
Petro123Все оппоненты кричали тебе что иструменты по месту и задаче.ну только эти крики странными были. вот в том примере, моё мнение, шаблон ни к чему. оно, конечно, может не совпадать с другими, но но это не повод говорить что это говнокод.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586326
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяно это не повод говорить что это говнокод.
Мне больно представить как с вашим не говнокодом можно решать задачи рефакторинга HTML и редизайна сайта.
Особенно если HTML дизайнер тоже кодер так себе. В то время как в шаблоне вы можете взять любой говно-html и просто добавить ссылки на объекты и циклы. То с литералами придётся весь говнокод вставлять в строки и мучительно экранировать кавычки.

Ну, или вот навигацию взять. Как ты из тэга в css класс переходишь? А в javascript функцию?
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586345
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадявот в том примере, моё мнение, шаблон ни к чемудак ты не растешь.
А мы тут учимся расти.
Зачем нам 5 лет твой код смотреть?
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586349
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяну почему так критично.в 2019 будет уже две твоих темы про шаблоны).
"Поживем увидим" (с)
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586351
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНу, или вот навигацию взять. Как ты из тэга в css класс переходишь? А в javascript функцию?разжуй для меня этот вопрос, я не очень понял его
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586376
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяразжуй для меня этот вопрос, я не очень понял его
В IntelliJ IDEA. Я нажимаю Ctrl+B или Сtrl+Mouse1 на имени класса в теге:
Код: html
1.
<div class="my-style my-div my-layout">


И попадаю в CSS файл где у меня эти классы описаны. Работает для кучи разных шаблонов от JSP до Angular.
Ты как это решаешь? Копируешь имя в буфер - идешь в каталог с css и делаешь поиск по всем файлам?
Даже копирование в буфер в будет мучением. Умный выбор, ведь, не работает, если вдруг IDEA не догадалась что у тебя HTML в строках.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586395
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКопируешь имя в буфер - идешь в каталог с css и делаешь поиск по всем файлам?и так и не так. тут важна правильная организация. у меня к каждой странице есть свой файл css, и там не много css классов. и для меня такой проблемы не существует. но такой умный выбор на jsp странице есть, как оказывается, но честное слово мне он не требовался.
такую задачу я решаю просто - nb позволяет отлаживать всё в себе. наглядно и удобно.
и неужели идея понимает эти тэги если они находятся в классе java? а не на jsp странице?
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586410
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, там целый механизм, ты говоришь ей что у тебя литерале SQL, HTML, любой другой язык и она соответственно применяет синтаксис.
Код: java
1.
2.
        //language=HTML
        String html = "<html></html>";


При этом работает разбиение на строки

Код: java
1.
2.
3.
       //language=HTML
        String html = "<html><div class=''>"+
            "</div></html>";


И я даже могу обернуть перенесенный div в другой тег одним хоткеем.

Не знаю будет ли работать со StringBuilder-ом. С другой стороны, он нужнен только в циклах. В твоём чудокоде можно было бы и + использовать без потери производительности.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586416
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи там не много css классов. и для меня такой проблемы не существует
Ну, вот каждый разговор с тобой к этому и сводится. Работаю один, мой код никто не ковыряет, чужой код сам не ковыряю, массштабы проекта "написал сам". И почему-то свой субъективный опыт программиста-одиночки ты считаешь единственно верным и экстраполируемым на проект любого масштаба.

Утрируя: если ты пишешь крестики-нолики то и впаривать тебе абстрактные слои не обязательно. Но и говорить, что у меня в крестиках-ноликах используется копи-паста и всё работает, ребзя, не ругайте копи-пасту. Тоже не стоит.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586421
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНе знаю будет ли работать со StringBuilder-ом. С другой стороны, он нужнен только в циклах. В твоём чудокоде можно было бы и + использовать без потери производительности.пробовал, тормоза жуткие. в том примере создаётся одно строка таблицы, минимум таких строк 36, максимум - 2000.
среднее - 800. данный вариант выводи одинаково что 36, что 500. больше пока не заведено :)
вот откуда и взято число 500+.
...
Рейтинг: 0 / 0
Шаблонизация ...
    #39586424
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
тут проблема несколько в другом. у меня нет столько классов что вставляют fw, только минимум необходимого.
и при этом не все классы прописываются в css.
...
Рейтинг: 0 / 0
25 сообщений из 119, страница 1 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / Шаблонизация ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]