繁体   English   中英

OpenUI5:JS视图与XML视图

[英]OpenUI5: JS views vs. XML views

我们目前正在一个新项目的背景下评估SAP的OpenUI5。

虽然大多数示例和教程倾向于使用XML构建视图,但出于个人偏好,我会选择Javascript来完成任务。 但是,我没有在OpenUI5中找到足够长的时间来确定这两种方法的任何特定优势。

使用JS有什么缺点吗? 还是有优势呢?

非常感谢!

更新:

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

XML优势:

  • 它们有助于坚持使用mvc,因为你不太愿意将控制器逻辑引入视图中
  • 可能允许使用所见即所得的编辑
  • 非常隐含,因此更容易学习

XML缺点:

  • 可读性差
  • 修改现有视图有时很棘手
  • 非常含蓄,如果你关心幕后发生的事情会很糟糕

我也是基于JS的观点的粉丝。 可能(dis)优点在我眼中:

JS的优点

  • 面向对象的视图创建。 您可以创建对象,排列它们,调用它们并使用您想要的任何JavaScript函数(例如循环)
  • 根据我的口味,基于SAPUI5 XML的视图似乎有点过于隐含。 在JS中,我可以清楚地读出编码我正在做的事情。
  • 页面可以是动态的
  • 你一直都在使用JavaScript

JS的缺点

  • XML倾向于在视图和逻辑之间进行严格的分离。 例如,您被迫使用外部格式化程序。 我认为XML视图可能更清晰。
  • SAP使用XML视图发布所有Fiori应用程序。 所以,你有点被迫掌握如何阅读基于XML的视图的知识。
  • XML中的代码行可能较少

**更新2015-06-18 **

利用XML视图中当前的OpenUI5 1.28支持条件以及最近预览的1.30支持动态加载XML片段的绑定 ,我觉得有必要更新我的答案。

借助这些新功能,XML视图获得了“健康”的灵活性。 对于我来说,与基于JS的视图相比,使它们更具吸引力。

这一切都在开发人员的眼中。 有些开发人员更愿意编写html5之类的(xml)视图,其他人则更喜欢用js视图控制感觉。 xml视图的一个小缺点是将它们转换为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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM