OpenUI5:JS 视图与 XML 视图

OpenUI5: JS views vs. XML views

我们目前正在新项目的上下文中评估 SAP 的 OpenUI5。

虽然大多数示例和教程倾向于使用 XML 构建视图,但出于个人喜好,我会选择 Javascript 来完成任务。但是,我在 OpenUI5 中研究的时间还不够长,无法确定这两种方法的具体优势。

使用JS有什么缺点吗?甚至优势?

非常感谢!

更新:

同意SDD64的回答。在同时使用这两种方法一段时间后,我可以将以下优点和缺点添加到列表中:

XML优点:

XML缺点:

这一切都在开发商的眼里。一些开发人员更喜欢编写 html5 类似 (xml) 的视图,而其他开发人员则更喜欢使用 js 视图进行控制的感觉。 xml 视图的小缺点是将它们转换为 js 代码的额外步骤。它们应该慢一点(可以忽略不计)。

我也是基于 JS 的视图的粉丝。可能的(dis)优势在我眼里:

JS 的优点

  • 面向对象的视图创建。您可以创建对象、排列它们、调用它们的方法并使用您想要的任何 JavaScript 函数(例如循环)
  • 就我的口味而言,基于 SAPUI5 XML 的视图似乎有点太含蓄了。在 JS 中,我可以清楚地读出我在做什么。
  • 页面可以是动态的
  • 你一直在JavaScript

JS 的缺点

  • XML 赞成视图和逻辑之间的严格分离。例如,您被迫使用外部格式化程序。我认为 XML 视图可能更干净。
  • SAP 使用 XML 视图发布所有 Fiori 应用程序。因此,您有点被迫至少了解如何阅读基于 XML 的视图。
  • 您的代码行可能更少 XML

** 2015-06-18 更新 **

鉴于目前 OpenUI5 1.28 的支持情况 XML 以及最近预览的 1.30 支持 binding for dynamic loading of XML fragments,我觉得有必要更新我的答案。

有了这些新功能,XML 视图获得了 "healthy" 的灵​​活性。与基于 JS 的视图相比,它们对我来说更具吸引力。

可以使用XML-Views动态构建页面:

控制器

sap.ui.controller("my.own.controller", {
  onInit: function () {
    var jsonData = {
        simpsons: [
            {name: "Marge", gender: "female"},
            {name: "Homer", gender: "male"},
            {name: "Bart", gender: "male"},
            {name: "Lisa", gender: "female"},
            {name: "Maggi", gender: "female"},
            {name: "Snowball1", gender: "female"},
            {name: "Ruprecht", gender: "male"}
        ]
    };
    var oModel = new JSONModel(suggJSON);
    this.setModel(oModel, "myJsonModel");
  },
});

查看:

 <core:View 
    xmlns:core="sap.ui.core" 
    xmlns:m="sap.m"
    xmlns="sap.ui.commons" 
    xmlns:html="http://www.w3.org/1999/xhtml"
    > 
      Content of Model:
      <m:VBox items="{myJsonModel>/simpsons}">
        <Button text="{myJsonModel>name} visible="{= ${myJsonModel>gender} === 'male'}"/>
        <Text text="{myJsonModel>name} visible="{= ${myJsonModel>gender} === 'female'}"/>
      </m:VBox>
  </core:View>