Браузер/HTML и Qt Quick/QML
Браузер – это среда выполнения для отображения HTML и выполнения кода Javascript, связанного с HTML. В настоящее время современные веб-приложения содержат гораздо больше кода JavaScript, чем HTML. Javascript внутри браузера представляет собой стандартную среду ECMAScript с некоторыми дополнительными API браузера. Типовая среда JS внутри браузера имеет глобальный объект с именем window
, который используется для взаимодействия с окном браузера (заголовок, URL-адрес, дерево DOM и т.д.). Браузеры также предоставляют функции для доступа к узлам DOM по их идентификатору, классу и т.д. (которые использовались jQuery для предоставления селекторов CSS), а в последнее время также и по селекторам CSS (querySelector
, querySelectorAll
). Кроме того, есть возможность вызывать функцию через определенное время (setTimeout
) и повторно вызывать ее (setInterval
). Исключая подобное (и другие API браузера), эта среда похожа на QML/JS.
Еще одно отличие заключается в том, как JS может отображаться внутри HTML и QML. В HTML вы можете выполнять JS только во время начальной загрузки страницы или в обработчиках событий (например, загрузка страницы, нажатие мыши). Например, ваш JS обычно инициализируется при загрузке страницы, что сравнимо с Component.onCompleted
в QML. По умолчанию вы не можете использовать JS в браузере для привязки свойств (AngularJS расширяет дерево DOM, чтобы разрешить это, но это далеко от стандартного HTML).
В QML JS гораздо более является объектом первого класса и гораздо глубже интегрирован в дерево рендеринга QML. Что делает синтаксис более читабельным. Помимо этих различий, люди, которые разрабатывали приложения HTML/JS, должны чувствовать себя как дома, используя QML/JS.
Подробности о среде выполнения JavaScript в QML, ее отличиях от браузеров и ее ограничениях можно прочесть в статье «Хост-среда JavaScript в QML»