一套适合SAPUI5初学者的循序渐进的学习教程教程目录SAPUI5本地开发环境搭建SAPUI5应用开发教程1:HelloWorldSAPUI5应用开发教程2:BootstrapSAPUI5应用开发教程3:接触第一篇SAPUI5ControlSAPUI5应用开发教程4:XMLView初学SAPUI5应用开发教程五:ViewController初探SAPUI5应用开发教程六-理解SAPUI5的模块概念SAPUI5应用开发教程七-JSON模型初探SAPUI5应用开发教程八-多语言支持SAPUI5应用开发教程No.9-创建第一个ComponentSAPUI5应用程序开发教程l第10期-SAPUI5应用开发教程十一:SAPUI5容器控制页面和面板的Descriptor是什么SAPUI5应用开发教程第十二篇-使用CSS类进一步美化UISAPUI5应用开发教程第十三篇-如何添加自定义CSS类SAPUI5应用程序开发教程第14部分-如何使用嵌入式视图SAPUI5应用程序开发教程第15部分-如何使用对话框和片段SAPUI5应用程序开发教程16-图标图标使用SAPUI5应用程序开发教程17-聚合和BindinginUI5CompositeControlsUsingSAPUI5ApplicationDevelopmentTutorial18-SAPUI5databindingsyntax中的特殊符号,以及绝对绑定和相对绑定的概念详解SAPUI5ApplicationDevelopmentTutorial19-SAPUI5DataTypesandComplexDataBindingSAPUI5应用开发教程二十-SAPUI5表达式绑定用法详解SAPUI5a应用程序开发教程21-SAPUI5的CustomFormatterCustomFormatterSAPUI5应用程序开发教程22-filter过滤器开发与使用SAPUI5应用程序开发教程23-列表控件的排序与分组GroupSAPUI5应用开发教程24-如何使用OData数据模型SAPUI5应用开发教程25-使用代理服务器解决SAPUI5应用访问远程OData服务的跨域问题SAPUI5应用开发教程26-详解OData服务与Mock服务器的使用步骤SAPUI5应用程序开发教程27-SAPUI5应用程序单元测试工具QUnit介绍SAPUI5应用程序开发教程28-SAPUI5应用程序集成测试工具OPA应用程序开发教程29-SAPUI5路由和导航功能介绍SAPUI5应用程序开发教程30-SAPUI5路由过程中的参数传递SAPUI5应用程序开发教程31-SAPUI5路由历史和路由返回和历史SAPUI5应用程序开发教程第32部分-如何创建一个自定义SAPUI5控件SAPUI5应用程序开发教程第33部分-SAPUI5应用响应式布局特性(Responsiveness)SAPUI5应用开发教程34-SAPUI5应用基于设备类型页面适配功能(DeviceAdaptation)SAPUI5应用开发教程35-如何将本地开发的SAPUI5应用部署到ABAP服务器SAPUI5应用开发教程三十六——使用Chrome开发者工具Elements选项卡动态修改CSS类SAPUI5应用开发教程三十七——使用Chrome开发者工具控制台面板进行ElementReviewSAPUI5应用开发教程38——DevelopingwithChromeSAPUI5应用程序开发教程第39部分-SAPUI5应用程序白屏的一些常见错误及分析方法分享SAPUI5应用程序开发教程第4部分-如何制作组件预加载包括SAPUI5发布版本,包括.jsSAPUI5Application开发教程41-Chrome扩展UI5Inspector离线安装使用SAPUI5应用开发教程42-SAPUI5自带的Diagnostics诊断工具使用介绍SAPUI5应用开发教程43-SAPUI5自带的SupportAssistant工具使用介绍SAPUI5应用开发教程44-Label和InputControlTextsNotHorizo??ntallyAlignedSolutionSAP的原因分析及解决方案UI5应用开发教程45-如何在SAPUI5应用中使用jQuery和原生DOMAPISAPUI5应用开发教程46-使用消息管理器实现开箱即用的验证(Validation)信息抛出SAPUI5应用开发教程47-How自定义SAPUI5字符串类型输入字段的校验逻辑SAPUI5应用开发教程48-如何在SAPUI5应用中开发条码扫描功能SAPUI5应用开发教程49-如何在手机上调试运行在手机上的SAPUI5应用桌面电脑SAPUI5应用开发教程五十-如何使用Cordova来生成将SAPUI5应用程序变成可安装在Android手机上的混合应用程序SAPUI5应用程序开发教程五十一-如何使用Chrome调试手机上运行的SAPUI5Cordova混合应用程序SAPUI5应用程序开发教程五十二-如何使用SAPUI5标准控件结合Cordova插件调用手机摄像头进行条码扫描SAPUI5应用开发教程五十三-如何自定义SAPUI5数据类型(DataType)SAPUI5应用开发教程54-如何将本地SAPUI5应用配置到本地FioriLaunchpadSAPUI5应用开发教程55-如何集成本地SAPUI5应用通过Node.jsExpress部署到公网。SAPUI5应用开发教程第56期-SAPUI5树控件(树)开发SAPUI5应用开发教程第57期-使用基于OData注解的SmartField学习SAPUI5应用开发教程五十八-使用工厂方法动态地在运行时创建不同类型的列表行项目控件SAPUI5应用程序开发教程五十九-如何在SAPUI5应用程序中显示世界地图SAPUI5应用开发教程六十-SAPUI5地图控件的一些高级用法SAPUI5应用开发教程六十一-绘制甘特图GanttChartSAPUI5应用开发教程六十二-基于ODataV4的SAPUI5表格控件使用介绍SAPUI5应用开发教程第63期-深入介绍基于ODataV4实现本地MockServerSAPUI5应用开发教程第64期-如何实现基于ODataV4的SAPUI5表单控件的filter)和sort(排序))功能SAPUI5应用开发教程六十五-基于ODataV4的SAPUI5表控件的创建、编辑和保存功能SAPUI5应用开发教程六十六-基于ODataV4的SAPUI5表如何实现删除控件的功能SAPUI5应用开发教程六十七-基于ODataV4SAPUI5应用的SAPUI5List-Detail(列表-详细信息)布局的实现SAPUI5应用开发教程六十八-路由失败时如何实现SAPUI5显示自定义NOTFound页面SAPUI5应用开发教程第六十九篇-如何从SAPUI5NotFound页面跳转到正常应用页面SAPUI5应用开发教程部分70-如何使用按钮控件触发页面路由跳转SAPUI5应用开发教程七十一-SAPUI5页面的嵌套路由SAPUI5应用开发教程七十二-SAPUI5页面路由的动画效果设置SAPUI5应用开发教程七十三-使用自定义查询实现SAPUI5页面路由的书签功能SAPUI5应用开发教程七十四-SAPUI5应用使用ODataV4为Table表数据显示一个陷阱SAPUI5应用开发教程七十五-如何使用SAPUI5主从表联动技术显示复杂表内容SAPUI5应用开发教程76-SAPUI5Instructions的LazyLoading(懒加载、延迟加载)如何实现Jerry在2014年加入SAP成都研究院CRMFiori开发团队后开始接触SAPUI5。SAP社区和“王子熙”微信公众号发表了多篇关于SAPUI5工作原理和源码分析的文章。在Jerry的文章中,对于对SAPUI5一窍不通的初学者来说,哪些资料比较适合入手学习呢?之前说过,Jerry也是从一个SAPUI5菜鸟一路走来的。他知道,对于一个只有ABAP开发背景的开发人员来说,要转型到SAPUI5开发领域并不容易。因此,我在业余时间设计了这个适合SAPUI5初学者的学习教程,把开发一个完整的SAPUI5应用程序的过程拆分成几个步骤,力求涵盖每个步骤涉及的所有知识点。这些知识点可能没有我的UI5源码分析系列那么深入,但力求通俗易懂,便于SAPUI5初学者看懂。本教程每一步的源码都存放在我的Github上,以01、02、03等文件夹标识,例如第1步的源码在这里。每一步都在上一步的基础上,增加了几个新的特性。建议零基础或对SAPUI5了解不多的初学者从第一步开始按顺序循序渐进学习,将这些代码下载到本地,配合教程的文字讲解,自己动手加深理解。如果大家对教程的每一步有什么疑问,欢迎在教程对应的步骤文章中评论留言。关于SAPUI5List控件和SAPUI5ModuleLazyLoading(也称惰性加载、惰性加载)的实现机制,笔者发表过一些文章:SAPFiori中的List是如何实现延迟加载的?深入学习SAPUI5框架代码系列一:UI5Module的懒加载机制与懒加载相反的是贪心加载(EagerLoading)。所谓贪心加载,就是在应用初始化的时候一次性加载尽可能多的业务数据,即使业务数据可能并没有被部分用户实际使用。让我们看一个实际的例子。下面是本教程第72步开发的页面:SAPUI5应用开发教程72-Employee简历视图页面设置了SAPUI5页面路由的动画效果,有4个tab可供点击。默认情况下,显示第一个选项卡Info的内容。步骤72采用默认的贪心加载方式,即无论用户是否点击上图中图例2、3、4对应的三个tab,默认情况下,这四个tab的内容(包括views和businessdata),会在应用初始化时提前加载。下面我们开启SAPUI5调试模式,观察这种默认贪婪加载模式的效果。在applicationurl后添加参数?sap-ui-debug=true,重启application:http://localhost:8080/webapp/...在Employee的resume视图中,虽然四个tab默认只打开Infotab页,但是当打开页面的时候,最后三个tab页对应的页面实际上是一起加载渲染的。这是因为这四个标签页的布局设计是静态嵌入到Resume.view.xml实现文件中的,是xml文件的一部分。只要加载这个视图文件,4个选项卡的所有内容都会和Resume.view.xml一起加载。在贪心加载模式下,从默认的Info选项卡切换到其他三个选项卡后,Network无法观察到任何数据加载,因为这些选项卡对应的Layout布局信息在之前已经加载到Resume.view.xml中了.下面我们通过这一步实现LazyLoading后的效果看一下。当且仅当单击Hobbies标签时,才会触发Hobbies视图的加载;当且仅当单击Notes标签时,才会触发Notes视图的加载;将视图按照业务进行细粒度的拆分,形成若干个小而专业的视图片段,一次只加载用户真正需要使用的那些视图片段。下面是具体的实现步骤。
