如何评价QML?

JavaScript014

如何评价QML?,第1张

QML (Qt Markup Language)是基于JavaScript、宣告式编程的编程语言,用于设计用户界面为主的应用程序。它是Qt Quick,诺基亚开发的用户界面创建包的一部分。

QML 主要用于移动应用程序,注重于触控输入、流畅的动画(60张/秒)和用户体验。QML documents 描述元素的对象树。

Qt 附带的QML 模块包括原始图形构建块(例如,矩形、图像)、建模组件;行为组件(例如,TapHandler、DragHandler、State、Transition、Animation)以及更复杂的组件控件(例如,按钮、滑块、抽屉、菜单)。

这些元素可以组合起来构建从简单的按钮和滑块到完整的支持 Internet 的程序的复杂组件。

QML 元素可以通过标准JavaScript内联和通过包含的 .js 文件进行扩充。元素也可以通过使用 Qt 框架的C++组件无缝集成和扩展。

QML 是语言;它的 JavaScript 运行时是自定义的 V4 引擎,自 Qt 5.2 起;而Qt Quick是2D场景图和基于它的UI框架。这些都是 Qt Declarative 模块的一部分,而该技术不再称为 Qt Declarative。

QML 和 JavaScript 代码可以使用 Qt Quick Compiler 编译成原生 C++ 二进制文件。或者,还有一种 QML 缓存文件格式,它动态存储 QML 的编译版本,以便在下次运行时更快地启动。

开发工具

由于 QML 和 JavaScript 非常相似,几乎所有支持 JavaScript 的代码编辑器都可以使用。

但是,自 2.1 版以来的免费跨平台 IDEQt Creator和许多其他 IDE 中都提供了对语法突出显示、代码完成、集成帮助和所见即所得编辑器的全面支持。

qml 可执行文件可用于将 QML 文件作为脚本运行。如果 QML 文件以shebang开头,则它可以直接执行。为部署打包应用程序(尤其是在移动平台上)通常涉及编写一个简单的 C++ 启动器并将必要的 QML 文件打包为资源。

1.写一个QML叫colorPie.qmlpragmaSingletonimportQtQuick2.0QtObject{propertystringcolor1:"green"}2.在main.cpp的engine.load(QUrl(QStringLiteral("qrc:/main.qml")))之前加qmlRegisterSingletonType(QUrl("qrc:/colorPie.qml"),"myColor",1,0,"Color")并且引包#include3.在页面上写1:importmyColor1.02:Rectangle{width:100height:100color:Color.color1MouseArea{anchors.fill:parentonClicked:{console.log("@@@@@@@@")Color.color1="red"}}}JS的方法与QT的绑定有些问题,可行性需要研究.

JavaScript 是由 ECMAScipt + 宿主环境构成的。

也就是说宿主环境不同,使用 JavaScript 编写 的库一般也是不兼容的。

例如宿主环境有常见的浏览器,也有 nodejs,当然也有 QML。

一般情况下,浏览器的 JavaScript 库和 nodejs 的 JavaScript 库是不能在 QML 上运行的,因为这些 JavaScript 库依赖浏览器或者 nodejs 的接口,例如 window,document,或者 require 等。

如果一个 JavaScript 库并不依赖于具体的宿主环境,那么他就可以同时在 浏览器,nodejs和 QML 上运行。例如 showdownjs/showdown。

还有一些 JavaScript 库,通过移除具体的宿主环境的 API,或者 mock 一个 API,就可以运行在 QML上。