Sapui5 开发者指南和Eclipse模板之间的不一致

Sapui5 开发者指南和Eclipse模板之间的不一致,sapui5,Sapui5,当我查看SAPUI5网站上的时,他们是如何声明XML视图的: <myNamespace:myContainerComponent xmlns="<my.default.library>" xmlns:<myFirstNamespace>="my.namespace.library" <!-- more if needed --> controllerName="my.controller.name"> &l

当我查看SAPUI5网站上的时,他们是如何声明XML视图的:

<myNamespace:myContainerComponent
    xmlns="<my.default.library>"
    xmlns:<myFirstNamespace>="my.namespace.library"
    <!-- more if needed -->
    controllerName="my.controller.name">

    <!-- All your other components -->

</myNamespace:myContainerComponent>

控制器的定义如下:

sap.ui.define([
“sap/ui/core/mvc/Controller”
],功能(控制器){
“严格使用”;
返回控制器。扩展(“”{
});
});
但是,当我在Eclipse中创建SAPUI5项目并使用选项New>SAPUI5 Application Development>View时,它会创建一个视图和一个控制器,如下所示:


sap.ui.controller(“{
});
一方面,以上述方式创建视图可以避免每次键入基本语法。然而另一方面,《开发人员指南》(尤其是控制器)中的语法看起来更有条理

我应该使用一种或另一种语法有什么特别的原因吗?或者我可以在编程中使用任何一种方法而不存在任何差异吗

我使用v1.32进行开发。

第一种语法(
sap.ui.define
)是首选语法。它也称为AMD(异步模块声明)语法(请参阅)。它将模块(您的案例中的控制器)包装在函数调用中,以启用

  • 清晰易读的模块声明
  • 异步调用模块(加载所有依赖项后)
实现这种语法的一个库是RequireJS,它也嵌入到SAPUI5(和openui5ofc)中

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

你也可以阅读


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

在那里,您可以通过执行
var Controller=sap.ui.core.mvc.Controller
(在您
required
模块之后)

第一个语法(
sap.ui.define
)是首选语法。它也称为AMD(异步模块声明)语法(请参阅)。它将模块(您的案例中的控制器)包装在函数调用中,以启用

  • 清晰易读的模块声明
  • 异步调用模块(加载所有依赖项后)
实现这种语法的一个库是RequireJS,它也嵌入到SAPUI5(和openui5ofc)中

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

你也可以阅读


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


在那里,您可以通过执行
var Controller=sap.ui.core.mvc.Controller
(在您
required
模块之后)

对于视图的语法,如果您理解它,它将有所帮助

要声明XML命名空间,需要使用以下语法:

xmlns:<namespace>="<library the namespace refers to>"
指示默认库。这是在没有命名空间的情况下声明的组件引用的库。如果稍后在我看来,我声明以下组件:

<Input id="myinput"></Input>

UI5库将从默认库(这里是sap.m)加载输入类

实际上,XML视图只有一种语法:

<myNamespace:myContainerComponent
    xmlns="<my.default.library>"
    xmlns:<myFirstNamespace>="my.namespace.library"
    <!-- more if needed -->
    controllerName="my.controller.name">

    <!-- All your other components -->

</myNamespace:myContainerComponent>

controllerName=“my.controller.name”
我对可能的控制器语法了解不够,无法解释它们。我会让比我更有知识的人进一步解释这些


希望这对您有所帮助并使事情更清楚。

对于视图的语法,如果您理解它,它将有所帮助

要声明XML命名空间,需要使用以下语法:

xmlns:<namespace>="<library the namespace refers to>"
指示默认库。这是在没有命名空间的情况下声明的组件引用的库。如果稍后在我看来,我声明以下组件:

<Input id="myinput"></Input>

UI5库将从默认库(这里是sap.m)加载输入类

实际上,XML视图只有一种语法:

<myNamespace:myContainerComponent
    xmlns="<my.default.library>"
    xmlns:<myFirstNamespace>="my.namespace.library"
    <!-- more if needed -->
    controllerName="my.controller.name">

    <!-- All your other components -->

</myNamespace:myContainerComponent>

controllerName=“my.controller.name”
我对可能的控制器语法了解不够,无法解释它们。我会让比我更有知识的人进一步解释这些


希望这对您有所帮助并使事情更清楚。

检查您在eclipse中使用的UI开发版本?在早期版本中,SAPUI5开发团队在文档中首选第一种语法。从版本1.30开始,首选更晚的语法,它创建了一个名为sClassName的类sap.UI.core.mvc.Controller的新子类。在未来的版本中,他们可能会放弃对早期语法的支持。谢谢Rayon。sap.ui.define语法允许我通过在回调中传递一个正式参数来使用sap.ui.core.mvc.Controller的实例。所以我可以在任何地方使用“控制器”,而不是完整的模块路径。对于我需要的其他模块,如sap.ui.model.json.JSONModel等,我如何用第二种方法做到这一点?这就是使用第一种方法的好处。我们可以在这种方法中使用别名。不确定在第二种方法中是否有任何方法做到这一点…检查您在eclipse中使用的ui开发版本?在早期版本中,第一种语法是SAPUI5开发公司首选