SAPUI5 fiori 开发的最佳实践 Best Practices for App Developers

一,只加载使用到的组件

1,使用manifest定义App所需要的依赖

"sap.ui5": {
	"dependencies": {
		"minUI5Version": "1.60.0",
		"libs": {
			"sap.ui.core": {},
			"sap.m": {},
			"sap.ui.layout": {}
		}
	}
	...
}

2,在js文件中,不使用的依赖一定要从sap.ui.define中删除

sap.ui.define([
	"sap/ui/core/mvc/Controller",
	"sap/m/MessageToast",
	"sap/base/Log"
], function (Controller, MessageToast, Log) {
	...

3,使用Lazy加载(还没使用到的数据暂时不加载)。

下面List控件的例子,一次检索20条数据,滚轮滚动时,再取20条。
注意:要满足这个需求的话,后端ABAP代码,也需要一次取20条。

<List
	growing="true"
	growingThreshold="20"
	...>

二,使用MVC

1,使用官方推荐的文件夹结构

2,使用XML格式的view

UI5支持XML,JavaScript, JSON, or HTML 4种view,官方强烈推荐使用XML。
XML的好处是显示与逻辑可以分离开,易于维护;BAS工具可以识别XML,进行拖拽。

3,controller的名字要和view一样

如果有共通的功能,可以放在BaseController里面,别的controller继承BaseController。

三,view要短小和简单

1, 使用sap.m作为默认的命名空间

xmlns="sap.m"不用起别名
其他的起别名,比如:xmls:a="sap.ui.layout"
a就是别名,别名一定要短。

<mvc:View
	xmlns="sap.m"
	xmls:l="sap.ui.layout"
	xmlns:mvc="sap.ui.core.mvc">
	<App>
		<Page>
			<l:HorizontalLayout>
			...

2,删除view里无效代码

  • property的默认值不需要写
  • 删除没有使用到的xmlns命名空间
  • 如果控件有默认的content 或者 items标签,则可以省略它们
  • 如果控件没有使用aggregations,则使用自关闭标签。
    比如:<Text text="aaa'/>

3,在List控件里,避免使用复杂控件和嵌套控件,会影响性能。

<List
	items={/Products}>
	<StandardListItem
		title="{Name}"
		description="{Text}"/>

4,写view前,尽早考虑把view分成多个view或者fragments

<App>
	<Page>
		<mvc:XMLView viewName="EmployeList"/>
	</Page>
</App>

5,选择最轻量的控件,来满足需求

UI5提供了丰富的控件,许多控件都能达到同样的目的,尽量选择最简单的。
Sample

四,给控件的id命名

如果不给控件id,则UI5就自动生产id。当以后想在controller里想通过byid找到控件时,就无法指定id。最好指定id。
Stable IDs: All You Need to Know

五,满足CSP要求

不要在html页面直接写JavaScript代码。

六,使用异步加载

异步加载会使App速度加快,用户体验变好。

1,启动异步加载功能

<script 
...
	data-sap-ui-async="true"
>

通过上面的代码,就可以开启浏览器的并行处理多个请求的功能

2,确保rootView和Routing的设置也开启的异步功能

"sap.ui5": {
	"rootView": {
        "viewName": "sap.ui.demo.walkthrough.view.App",
        ...
        "async": true
    },
    "routing": {
        "config": {
            ...
            "async": true
        }
    },
...
posted @ 2022-05-06 16:23  小石王  阅读(719)  评论(0编辑  收藏  举报