Веб-интерфейсы
Хочется поднять вот какую тему. Наверняка, многие из вас сталкивались с необходимостью программировать веб-интерфейсы с большим количеством элементов (CMS, админки разнообразных скриптов и т.д.). В таких интерфейсах много элементов: тут и чекбоксы, и текстовые поля, и выпадающие списки и т.д. Порой на одной странице их количество может исчисляться десятками.
Как вы лично подходите к проблеме программирования и обработки большого количества таких элементов?
Меня интересует прежде всего подход, методики: фреймворки ли это, либо просто самописная библиотечка... ;)
аналогично)
Чаще всего вручную. Но есть и самопальная библиотечка, которую в простых случаях можно использовать. Вот только, к сожалению, простых случаев почти не попадается теперь.
Как вы лично подходите к проблеме программирования и обработки большого количества таких элементов?
я не исключения, тоже вручную :D (Только хорошо документированную!)
title="Логин для входа в Базу Данных"
description=""
inConfig=1
editable=1
type="string"
value="root"
[User_Charset]
title="В какой кодировке отдавать данные пользователю"
description=""
inConfig=1
editable=1
type="enum"
enum="UTF-8;WINDOWS-1251;KOI8-R"
value=0
[Gzip_Use]
title="Использовать Gzip-сжатие"
description=""
inConfig=1
editable=1
type="boolean"
value=0
и т.д.
Соответсвенно форма для редактирования библиотекой сама делается, и обрабатывается опять же ей. При редактировании парсит на то, является ли новое значение bool, int и далее (ну короче элементарная проверка, чтоб не ввели че не надо). Может и муторно и кривовато, но зато хоть не надо вручуню все проверять))
ЗЫ: поля inConfig - это когда происходит кэширование в php файл конфига. Т.е. пихать его туда или нет
[COLOR="Silver"]ЗЫЫ: надо бы ещё, чтоб по регулярке, было б прикольно, да лень(([/COLOR]
Меня интересует прежде всего подход, методики: фреймворки ли это, либо просто самописная библиотечка... ;)
.NET - я не хочу париться о сохранении состояния контрола, о его внутренней логике и еще тонне мелочей.
Интересует только OpenSource
Для мелких проектов юзаю phpdbform со своими доработками. Вещь хоть и мёртвая, но зато рабочая и податливая. Встроил туда FCKeditor и больше мне от жизни ничего не надо :)
Хорошую идею ты подал. phpdbform можно доработать, встроить туда много полезностей и чуть адаптировать под современные реалии. И заново подать публике - уверен, интерес к таким вещам есть (как в своё время он появился у меня).
Интересует только OpenSource
Чегож так категорично. Есть Mono.
Давайте тогда подумаем над тем каким требованиям должна соответствовать такая библиотечка)) Кто что думает?
Зря вы так батенька ;) Хостингов с .NET полно.
1) полный ООП
2) Поддержка парадигмы MVC
Барабанная дробь, получаем клон Ruby on Rails/JSP/ASP.NET :D
Обычно ведь как бывает - заказчик имеет уже дизайн, ТЗ и хостинг (либо выделенный сервер). Попытка же смены ключевой технологии - это дополнительные издержки, а значит повышение конечной стоимости проекта и увеличение сроков.
Для особых случаев и отдельных конретных проектов иногда .NET имеет смысл. Но как технология для разработки фреймворка или библиотеки для обширного использования в вебе - не катит никак. И дело тут вовсе не в наличии "передового опыта" или отсталости той или иной технологиии - каждая имеет свои достоинства и недостатки (.NET, PHP, Perl, Ruby - да и все что создано человеком).
Еще раз повторюсь - у РНР и Perl есть одно неоспоримое и железобетонное преимущество - распространненость (точно такое же как у Windows хотя с технической точки зрения она отстает от передовых технологий почти на 10 лет и имеет огромные недостатки).
Посему приемлемы только РНР, Perl и Python. Все остальное встречается гораздо реже (.NET, JSP, Ruby) либо почти не встречается вовсе (ColdFusion).
Но самое главное!! Мы обсуждаем здесь не технологии, а идеи. Надеюсь, что остальные участники не будут впрягаться в нашу с hardcase беседу на грани холивара.
Идеи и предложения, господа!
В простых случаях, как было выше, - вручную пишу HTML + PHP.
В тяжелых - даю заказчику генератор форм (JS+HTML+PHP+MySQL). ИМХО - пусть лучше заказчик выучит пару регулярных выражений, чем будет ежедневно иметь мой мозг.
Ну-ну... В 98% случаев заказчик с трудом пользуется своим собственным сайтом не то, что изменять скрипты.
Ну и возможно, мне повезло с заказчиком (он оказался из тех 2%) и согласился создать все формы сам с помощью конструктора a la phpMyAdmin, вместо того чтобы подрорбно изложить свои требования к ним в документе MS Word.
1) Тупо тк проще и быстрее написать руками
2) Не будет кросс-СУБД
К тому же мы говорим несколько о другом, чем о визуальном конструкторе форм
Однако, я привёл phpMyAdmin не имея в виду сочинение корсс-СУБД запросов, а как пример интерфейса понятного опытному пользователю веб-браузера.
И так как мы вводили в phpMyAdmin: имя поля, тип (из списка), значение по умолчанию и т.д.
в конструкторе форм можо написать: имя поля, имя переменной, html-тэг (input:text, input:radio, textarea и т.д.), набор значений (для select и radio) и рег-выражение для проверки введёных данных (е-mail, телефон, ИНН...) + надо вывести подсказку в случае неправильного заполнения поля (введите телефон - 10 цифр без пробелов).
Это решение, как и многие другие, приведеённые здесь, решает проблему создания пользовательского интерфейса не во всех случаях. К "тяжелым" случаям я бы отнёс 10++ форм с ~50 полей в каждой, хотя дело не только в числе но и в неопределённости, в которой находится заказчик относительно точного состава каждой формы.
Со слов заказчика:
Флаг, как говорится в руки. Более того, есть ИМХО, что yandex.market или другой магазин с большим асортиментом (nix.ru) не просит программистов создать в БД новую таблицу и формы для неё, при добавлении нового типа товара.
Автоматизированное создание пользовательского интерфейса несомненно ограниченичивает нашу свободу в средствах валидации данных, возможно, в наборе html-элементов, стилях и в чём-то ещё. Вместо
Визуальный конструктов форм является одним из аспектов создания пользовательских интерфейсов (наряду с генерацией из .ini файлов, ORM объектов и php помощниками, заменяющими html), который не был раскрыт в этой теме. Если нет - прошу прощенья за оффтопик.
Из мелочных проектов никому это нафик не нужно + затрудняет понимание кода для следующих разрабов если будут (зы я до сих пор противник смарти), для крупных проектов никакой библиотеки не хватит - создавать формы самое что наверное есть плохое для программиста (не для кодера). В свое время пробовал писать классы, но даже написав - через- полгода забывал как они работают, а вспомнив видел что они неудачные и проще пройтись (хоть и влом) руками.
ЗЗЫ кто на гугл конференшн едет?