Веб-разработка

индекс
236,88

Вопрос к спецам: Что лучше для «html-ui»-фреймворка: компоненты на дивах или на стандартах html?

Есть задумка: Портировать для (пока еще не выпущенного) gwt 2.0: компоненты flex4 (вместе с максимально возможным fxp1.0). Ну скажем в пакете com.google.gwt.user.client.ui.flex4.

Во-первых, скажем так, мне очень нравится сам fxg, да и сам flex4, к тому же существующий gwt-ui не дает мне полноценной свободы в быстрой реализации, хотя бы, 80% моих проектов. Все существующие библиотеки ну слишком сильно весят, да и тормозят не меньше. И семантика их мне совсем не нравится.


Требуется портировать 100% кроссбраузно, ессно (ну как это и рендерит сам flash-plugin).

Я неплохо верстаю (ну окромя остального), но никогда не занимался бенчмаркингом и вообще техническими аспектами рендеринга верстки, а в моей команде есть разногласия, посему есть несколько вопросов к комьюнити:

1. Что лучше использовать в custom-компоненте, использующем, предположем, логику checkbox или radiobox — дивы с соотвествуещей логикой или стандартные html-компонеты, применяя к ним css2-«3» и обрамляя дивами, в случае необходимости (ну для дальнейшей красоты, которая может отсутствовать в css)? Понятно, что [input type=«textbox»]/[textarea] необходимы впринципе для логики edit-компонентов, (хотя вроде уже многие браузеры поддерживают editable, но я с этим свойством не работал ни разу), но кнопку и пр. можно сделать несколькими путями, но непонятно, какие лучше, или уже действительно пофигу?

2. Что правильнее использовать, возможно большой кусок css, или небольшую добавку js? Т.е в gwt2 переписали layouts, ибо они на onResize неадекватно-тормозно реагировали, в итоге выбрали чистый css; где тут золотая середина для большинства клиентов? Вообщем, как правильнее всего выбирать баланс: css(2-«3»)-js/кроссбраузность (в плане минималистичности написанного кода, ибо gwt грузит разное под разные useragent, если надо), что сильнее бьет по производительности из технологий? Т.е если я говорю через js изменить ширину, изменится (в среднем по браузерам) рендер, а потом css-свойство, или сначала js поменяет стиль, а он потом рендер? Или вообще все иначе и не стоит на это счет запариваться, или есть какие-то аспекты?

3. Насколько широко стоит использовать семантику html? Т.е по сути можно ограничиться одними div-тегами, однако можно и в «нужной» семантике вместо «div со стилем» юзать span, li и пр. (и даже взять из html5, а если да, то в каком объеме)? Т.е как удобнее и правильнее будет конечному разработчику приложения на моих компонетах? Да и как для веба (клиенты+поисковики) будет лучше? И как это может отразиться на скорости рендеренга (если див+стиль, заместо стандарта), ну скажем с 1000 таких компонентов на странице?

Ну и ваши пожелания и предложения будут совсем не лишними.
–1
1 ноября 2009, 20:18

комментарии (16)

0
Etherial #
Если бы был однозначный ответ на все эти вопросы, уже был бы сделан идеальный фреймворк :)
Тот же ExtJS, с которым мне приходится работать построен полностью на div'ах, из за чего он получается достаточно тяжелым, особенно когда идуд большие таблицы с данными, каждая ячейка в которых представляет собой div, да еще и не один.
Я думаю, что если вы сейчас собираетесь писать все с нуля, то стоит сразу присматриваться к html5 и стараться брать от него максимум.
–3
mrskam #
Я знаю, я работал с ним в gwt-ext, но он вообще криво написан (окромя прогрузки 1.5 метра кода), и сделать по нему каие-то выводы сложно. Посему и возник вопрос.
0
Etherial #
Насчет криво написан не согласен. Он просто наверное излишне мощный для ваших нужд. Конечно за эту мощь и гибкость приходится платить размером и скоростью работы, но тут уж ничего не поделаешь. К тому же современные браузеры все быстрее и быстрее работают с javascript'ом и большими объектными моделями документов.
0
mrskam #
Есть и лучше, тот же смарт. Для моих проектов интересны не только современное железо, но и нетбуки за 100 баксов, которые в африке :)
0
mrskam #
Хотел сказать — не только современные бразеры и железо. Интересен «почти универсальный для современных
RIA нужд» фреймфорк, нормально работающий (как флеш) под совсем не топовое железо и ПО.
0
ashofthedream #
В ExtJs, если вы посмотрите, все дефолтные инпуты у форм основанны на дефолтных html-ных инпутах + label\fieldset. А гриды — да, достаточно тяжелые.
+2
altspam #
Если вы неплохо верстаете, странно что вообще появляется вариант «все на дивах». Компонент, реализующий логику checkbox, должен содержать в себе checkbox — это аксиома. Да и скриптам проще будет с ним работать. Если не нужен стандартный input, его всегда можно скрыть стилями. На js я бы не стал полагаться на 100%, как минимум функционал должен дублироваться для отключенных скриптов, и тут вам опять же помогут стандартные компоненты.
0
mrskam #
Ну почему, в checkbox нельзя поменять вид галочки, например. Т.е это уже не аксиома. И потом, я ж сказал — для gwt, скриптовой части для разработчика тут нет (ну для обычных случаев).
+1
altspam #
Можно скрыть checkbox и добавить фоном произвольную галочку.
–1
mrskam #
Так вот и интересно, что лучше — 2 дива или див и чекбокс. Не интуитивно, а с объяснениями и предположениями.
0
yroman #
Зачем же реализовывать руками функциональность, которая уже поддержана браузером? Тот же фокус, переключение состояния по пробелу и так далее?
0
mrskam #
Ну есть моменты, которые нельзя стилизовать для встроенных компонентов, а также не всегда возможно изменить некоторое поведение. Хочется, по возможности, полностью портировать flex4 в gwt2 как спецификацию, со всеми компонентами, поведением, эффектами, fxp1.0 и пр.
0
mrskam #
Сорри, я по аналогии с вейвом и форумами привык, что пост можно редактировать, посему сначала пишу, подом думаю, если мысль вперед оторавлась :) Свою точку зрения вы высказали, хотя меня еще интересует скорость и последствия использования 2 или 1+1.
0
altspam #
Про скорость никто вам не ответит лучше тестовой странички.

Последствия применения дивов очень печальные. Поскольку переключаться они могут только скриптом, функционал системы на ваших компонентах будет здорово ограничен. Я сам думал, что браузеры без скриптов бывают только в сказках, пока не столкнулся с этим при сдаче работы в офисе заказчика (Москва, недвижимость).

Так что рекомендую придерживаться ненавязчивого js — сначала базовый функционал, поверх него скрипты и стили. Делаете слайдер — вставьте внутрь поле ввода, скрытое при html id="js". По-моему, доступность и семантика — достаточно веские аргументы.
0
mrskam #
gwt без скриптов изначально совсем не работает. Мне нужен именно уровень gwt2. Именно там меня не устраивает стандартный ui. Иной фреймворк, не основанный не на gwt, для которого не обязательны скрипты, в далеких проектах.
0
tenshi #
view-source:http://mojura.110mb.com/html/lib/

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.