开发人员指南和Eclipse模板之间的不一致

时间:2016-03-02 10:15:40

标签: sapui5

当我查看SAPUI5网站上的Developer Guide时,这是他们声明XML视图的方式:

<mvc:View
   xmlns="sap.m"
   xmlns:mvc="sap.ui.core.mvc" controllerName="">
</mvc:View>

控制器的定义如下:

sap.ui.define([
   "sap/ui/core/mvc/Controller"
], function (Controller) {
   "use strict";
   return Controller.extend("", {
   });
});

但是,当我在Eclipse中创建SAPUI5项目并使用选项 New &gt; SAPUI5应用程序开发&gt; 查看,它会创建一个视图和一个如下所示的控制器:

<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"
        controllerName="" xmlns:html="http://www.w3.org/1999/xhtml">
</core:View>
sap.ui.controller("", {
});

一方面,以上述方式创建视图使我无法每次都输入基本语法。然而另一方面,开发人员指南(尤其是控制器)中的语法看起来更有条理。

为什么我应该使用一种或另一种语法?或者我可以使用任何一种方法而没有任何编程差异吗?

我正在使用v1.32进行开发。

1 个答案:

答案 0 :(得分:3)

第一种语法(sap.ui.define)是首选语法。它也称为AMD(异步模块声明)语法(请参阅this Wiki article for more information)。它在启用

的函数调用中包装模块(在您的情况下为控制器
  • 清晰易读的模块声明
  • 模块的异步调用(加载所有依赖项后)

实现此语法的一个库是RequireJS,它也嵌入到SAPUI5(和OpenUI5 ofc)中。

在他们关于控制库的文档中,SAPUI5团队还推荐了AMD语法(参见here)。 sap.msap.ui包中的所有控件(我已经检查过)都使用AMD语法。

您还可以阅读this interesting blog post from DJ Adams

然而,没有声明(afaik)第二种语法已被弃用。但请记住,它是由Eclipse自动生成的,因为它(UI5插件)很少被维护,因此不是最新的(他们更喜欢使用Node.js + grunt + {{1 }})。

通过执行Sublime/Visual Studio Code/etc(在var Controller = sap.ui.core.mvc.Controller模块之后)

,您可以获得更短的依赖路径