Что лучше использовать для создания интерфейса: Canvas, WebGL или DOM?
Что будет быстрей работать в качестве пользовательского интерфейса? DOM более нативен для браузера, а значит, каждый браузер имеет какие-то фичи, которые позволяют работать элементам DOM быстрей. WebGL более нативен для видеокарты, значит, будет эффективней взаимодействовать с видеокартой. Canvas, очевидно, куда менее эффективн, чем WebGL, но насколько он хуже или лучше DOM?
Так какой же из этих средств будет наиболее быстрым и на каком из них будет более эффективно писать интерфейс веб-приложения?
Алексей Тен, пользовательские интерфейсы. Всякие кнопочки, прогрессбары, слайдеры, вкладочки, етц. Думаю, на DOM вряд ли можно легко построить какой-то более серьёзный интерфейс.
ixon, чувак. Ты прямо сейчас находишься на сайте в котором пользовательский интерфейс легко построен на DOM. Так же как на 99.99% остальных сайтов в интернете.
Алексей Тен, ломающие новости. А ещё вопрос не о практике использования посеместно, а о том, что будет эффективней: Canvas, WebGL или DOM. Вопрос производительности. Какой из интерфейсов, написанных на одной из этих технологий будет наиболее эффективным.
Интерфейс для веб-приложения пишите на DOM с иконками на SVG. Будете писать на графике, замучаетесь с обработкой кликов, с состояниями элементов, с кешированием тяжелых компонентов при перерисовке, с масштабированием и.т.д. Проблем будет много.
ixon, эффективность упадет на том моменте, когда вы поймете, что уходит слишком много времени на разработку. И что понимать под эффективностью? Из плюсов WebGL вижу только быстродействие, но в веб-приложениях узким местом является не перерисовка, а получение контента с back-end'а. Вы не сможете адекватно адаптировать интерфейс под разные экраны, вы лишите человека возможность использовать зум браузера, вы лишите возможности людям с ограниченными возможностями пользоваться вашим приложением (т.к. им нужна семантика). Будут проблемы с текстовыми полями, т.к. их придется писать с нуля, а там важно учитывать куча моментов, от работы с клавиатурой, до переносов текста по ширине слов и направлению на разных языках.
Если вы когда-то упретесь в быстродействие браузера с DOM, то скорее всего вам нужно будет просто оптимизировать ваше приложение, т.к. очень много моментов есть.
Владимир Проскурин, под эффективностью я имею ввиду именно быстродействие. Я полагаю, если в webGL всё так плохо с скоростью разработки для конкретных задач, то ведь наверняка существует масса фреймворков для упрощения? Таким образом можно и адаптивности добиться и ускорить разработку.
ixon, тогда на back-end вам нужно будет избавится от языков высокого уровня, и писать на Assembler.
Но в таком случае к концу этого десятилетия у вас появится бетка.
Средств браузера достаточно для реализации интерфейсов. Если в интерфейсе располагается десятки тысяч блоков, то тогда имеет смысл переносить на графику, но не все, а только эти блоки. В другом случае, пользователь даже не заметит прибавку производительности, т.к. перерисовка и так была быстрой, а скорость работы с сервером не изменилась.
Также прошу заметить, в компах без аппаратного ускорения (например на серверах через удаленный рабочий стол), webgl работать не будет.
Имеет смысл использовать графику только со сложной анимацией, большими интерактивными объемными объектами, 10000 блоков. В других случаях хватит и дом.