# 模板

在处理HTML项目时,它们经常使用模板驱动开发。一个小的HTML存根(桩、占坑)在服务器端进行扩展,代码由服务器使用模板机制生成。例如,对于照片列表,列表标题将以HTML编码,动态图像列表将使用模板机制动态生成。一般来说,QML也可以完成这样的工作,但它存在一些问题。

首先,没有必要。 HTML开发人员这样做的原因是为了克服HTML后端的限制。 HTML中还没有组件模型,因此必须使用这些机制或在客户端以编程方式使用javascript来完成动态方面需求。许多JS框架(jQuery、dojo、backbone、angular等)都可以解决这个问题,并将更多逻辑放入客户端浏览器以连接网络服务。然后,客户端将只使用Web服务API(例如,提供JSON或XML数据)与服务器通信。这对QML来说,似乎也是更好的方法。

第二个问题,来自于QML的组件缓存。当QML访问一个组件时,它会缓存渲染树并加载缓存的版本进行渲染。如果不重新启动客户端,将无法检测到磁盘或远程上的修改版本。为了克服这个问题,可以使用一个技巧,可以使用URL片段来加载URL(例如 http://localhost:8080/main.qml#1234 (opens new window)),其中'#1234'就是所谓的片段。 HTTP服务器始终提供相同的文档,但QML将使用完整的URL(包括片段)存储该文档。每次访问此URL时,片段都需要更改,QML的缓存不会受到正面影响。片段可以是当前时间(以毫秒为单位)或随机数。

Loader {
    source: 'http://localhost:8080/main.qml#' + new Date().getTime()
}

总之,使用模板是存在可能的,但不真正推荐使用,这也没有发挥QML的优势。 更好的方法是使用提供JSON或XML数据的Web服务。

最后更新: 1/22/2022, 8:08:31 PM