@
目录我们在查阅 SAP UI5 官网的时候,有时会看见关于 namespace 即命名空间的资源介绍,如下图所示。
这里的符号 n 代表 namespace
:
在一个加载完毕的 SAP UI5 应用浏览器窗口里,打开 Chrome 开发者工具 console 面板,输入命名空间,比如 sap.ui.unified
, 就能看到这个命名空间里包含的 SAP UI5 实现 class:
在 SAP UI5 中,命名空间用于组织代码并避免命名冲突。它可以帮助开发者定义应用程序中的资源位置。例如,在引导时,可以在 index.html 中使用 data-sap-ui-resourceroots
属性设置命名空间。这样,我们就可以使用命名空间来指向应用程序中的文件夹,例如控制器、视图等。
SAP UI5 namespace 在 index.html 中的使用
举个例子,如果在 index.html 中设置了如下命名空间:
<script id='sap-ui-bootstrap' src='resources/sap-ui-core.js' data-sap-ui-theme='sap_bluecrystal' data-sap-ui-libs='sap.m' data-sap-ui-compatVersion="edge" data-sap-ui-resourceroots=' { "sap.ui.demo.db" : "./" }' > </script>
那么从现在开始,sap.ui.demo.db
将指向 index.html 所在的文件夹(因为将属性设置为当前文件夹./
.
在 SAP UI5 中,命名空间的限制主要与开发人员在引导时设置的命名空间有关。
至于命名约定,可以使用 company.project 等形式。但是,建议尽量简化命名空间,以便在需要时不必输入过多的点号。
我们再看看 SAP UI5 命名空间在 JavaScript 代码中的使用。
SAP UI5 namespace 在控制器 JavaScript 编程中的使用
命名空间的使用在各种编程语言中都很常见,比如在Java中就有包(package)来作为命名空间。在SAP UI5中,命名空间的概念和使用与此类似。比如在定义一个控制器或组件时,我们通常会使用命名空间来指定其位置。例如,如果我们有一个名为"myapp"的应用,那么我们可能会将一个名为"HomeController"的控制器定义在"myapp.controller"这个命名空间下。
下面是一个SAP UI5中使用命名空间的例子:
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/m/MessageToast"
], function (Controller, MessageToast) {
"use strict";
return Controller.extend("myapp.controller.Home", {
onShowHello: function () {
MessageToast.show("Hello World");
}
});
});
在这个例子中,我们定义了一个控制器,并使用"myapp.controller.Home"作为它的命名空间。这样,我们就能够在应用的其他部分通过这个命名空间来引用或使用这个控制器。例如,我们可以在一个视图中通过以下方式来使用这个控制器:
<mvc:View controllerName="myapp.controller.Home" xmlns:mvc="sap.ui.core.mvc" displayBlock="true" xmlns="sap.m">
<App>
<pages>
<Page title="{i18n>title}">
<content>
<Button text="{i18n>showHelloButtonText}" press=".onShowHello" />
</content>
</Page>
</pages>
</App>
</mvc:View>
在这个例子中,我们通过"controllerName"属性指定了视图使用的控制器,其值就是前面定义控制器时使用的命名空间。
除了用于组织代码,命名空间在SAP UI5中还有另一个重要的作用,那就是用于定位资源。在SAP UI5中,系统会根据命名空间来确定一个控制器、视图、组件等的物理位置。例如,对于上面的"myapp.controller.Home",SAP UI5会将其转换为一个路径,比如"myapp/controller/Home.controller.js",然后在这个路径下查找对应的JS文件。因此,命名空间实际上也定义了我们的项目结构。
参考文献
(1) How use Namespaces in sapui5? - Stack Overflow. https://stackoverflow.com/questions/40273481/how-use-namespaces-in-sapui5.
(2) Namespaces in SAPUI5 - Stack Overflow. https://stackoverflow.com/questions/45739780/namespaces-in-sapui5.
(3) Best Practice for SAPUI5 Application Namespace | SAP Community. https://answers.sap.com/questions/757786/best-practice-for-sapui5-application-namespace.html.