开发混合Web容器

  您可以将移动应用程序开发为混合应用程序,该混合应用程序由本机应用程序包装程序(例如PhoneGap)和HTML查看器组成,用于在用户界面上显示内容。

  混合应用程序的优点是可以在应用程序商店中发布它们。另外,通过将应用程序代码和SAPUI5库文件嵌入到混合容器中,用户只需要安装文件一次,而不需要每次启动应用程序时都下载它们。但是库的大小变得很重要,因为每个用户都必须安装文件,而在web应用程序中,库部署在服务器上,用户只需要在运行时下载库的必要部分。

  要在混合应用程序中包含所需的资源,可以使用静态移动运行时包openui5-runtime-mobile*.zip。这个包并不包含在SAPUI5中,而是包含在开源版本OpenUI5中。

  这些包的库大小相当小,因为很可能不需要的内容已经被删除了,例如测试页面。一个包包含所有JavaScript文件的调试版本以及优化和最小化的版本。因此,您可以将包用于生产用途和调试目的。要在应用程序包装器(如PhoneGap)中使用此包,请在应用程序开发人员的相应资源位置解压该包。

  为了确保文件很小,它只包含最可能使用的控件库,而不是所有控件库。根据混合应用程序的不同,可能需要通过从运行时的各个文件夹中复制库来添加库,或者需要删除库来减少包大小,从而减少用户的安装大小。

该文件包含以下控制库

  •sap.f

  •sap.m

  •sap.tnt

  •sap.ui.core

  •sap.ui.layout

  •sap.ui.suite

  •sap.ui.unified

  •sap.uxap

  这个定义,包括或不包括哪些库可能是有争议的。这只是基于经验法则,而且许多应用程序都需要进行调整。

  而且,移动/混合包排除了某些类型的文件,这些文件通常是不需要的。您的里程可能会有所不同,因此您可能需要为特定应用程序的需求添加相应的文件library-preload.js文件包含一个库中的所有控件,以减少HTTP请求的数量,这在混合应用程序中是不需要的,因为没有HTTP延迟。SAPUI5将在默认情况下尝试访问它们,因此您可能会看到在日志文件或开发人员工具中加载这些文件的尝试失败。但是,这些错误消息不会造成伤害,您可以通过声明不存在此类文件并在SAPUI5引导脚本标记中设置以下配置来消除它们:

data-sap-ui-preload=""

  

  虽然静态包足够小,可以包含在混合应用程序中,但是您可以通过删除其他文件来进一步减小大小并优化特定应用程序的内容。以下列举了一些例子:优化包大小

  ▪如果不需要相应的控件库,则可以删除所有库文件夹。例如,在OpenUI5版本中,您可以删除套件和统一文件夹。

  ▪在每一个/resources/sap/* ... */ themes文件夹,您可以删除除您正在使用的主题文件夹以外的所有主题文件夹。

  请注意:对于所有JavaScript文件,都存在优化版本和调试(dbg)版本。如果您删除了这些文件,请确保始终删除这两个版本。如果您不需要进行简单的调试,并且希望实现最小的安装大小,我们建议删除所有*-dbg.js文件。您可以删除更多的文件,但是大小缩减是有限的,要找到不需要的文件变得越来越困难。

设备准备事件

  混合web容器需要一些时间来初始化。在此期间,AJAX请求的发送被阻塞,这意味着一旦发送AJAX请求,JavaScript代码就会停止,代码执行也会停止。这会导致UI冻结效果。

  SAPUI5中的OData模型在内部使用AJAX请求,因此必须在混合容器准备好避免用户界面冻结之后进行OData模型初始化。初始化之后,混合web容器将触发一个事件,该事件在PhoneGap中称为deviceready。要修复此问题,请将创建OData模型的代码移动到核心对象或任何其他控件的model属性设置到deviceready事件侦听器。

Example:

<script>

<!-- put the following code in the beginning of the application code -->

function appReady(){

    sap.ui.getCore().setModel(new sap.ui.model.odata.v2.ODataModel(<ODATA_URL>));

}

<!-- bind to the deviceready event -->

document.addEventListener("deviceready", appReady, false);

</script>

跨域限制:

如果使用AJAX从外部服务器或服务加载数据,则必须在混合web容器中配置外部域,以使AJAX请求通过跨域限制。将演示应用程序集成到PhoneGap中的结果如下:

  ▪Android

  如果AJAX代码在Android的webview中运行,则不存在跨域限制。这意味着您可以从任何地方使用AJAX加载数据。但是,PhoneGap文档仍然表示需要在一个XML文件中配置域。

  ▪iOS

  iOS中的webview中的限制仍然存在,您需要将使用AJAX访问的域添加到白名单文件中,以绕过该限制。有关白名单文件的详细信息,请参阅PhoneGap网站上的PhoneGap文档。

UI5-文档-2.5-开发混合Web容器的更多相关文章

  1. 在线文档预览方案-office web apps续篇

    上一篇在线文档预览方案-office web apps发布后收到很多网友的留言提问,所以准备再写一篇,一来介绍一下域控服务器安装,总结一下大家问的多的问题,二来宣传预览服务安装与技术支持的事情. 阅读 ...

  2. [转载]在线文档预览方案-Office Web Apps

    最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...

  3. 空间日志编辑器:word文档图文快速粘贴到web

    百度ueditor可以实现word文档图文快速粘贴到web 1.4.2之后官方并没有做功能的改动,1.4.2在word复制这块没有bug,其他版本会出现手动无法转存的情况 本文使用的后台是Java.前 ...

  4. 必应地图api文档,微软必应地图web开发版详解,可以在国内使用国外地图

    最近,公司项目要求在页面中嵌入地图,需求还算简单,但是由于必须具备响应式(主要是pc和移动端),而且由于公司业务是全球性的,要支持国外地点搜索.考虑到百度,腾讯,高德等等国内地图无法显示国外数据,谷歌 ...

  5. 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)

    对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...

  6. 在线文档预览方案-office web apps

    最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...

  7. 基于Zabbix API文档二次开发与java接口封装

    (继续贴一篇之前工作期间写的经验案例) 一.           案例背景 我负责开发过一个平台的监控报警模块,基于zabbix实现,需要对zabbix进行二次开发. Zabbix官方提供了Rest ...

  8. 【IE】浏览器模式与文档模式 及其开发中处理方式

    原文:http://blog.csdn.net/neo_liu0000/article/details/7589731 什么是浏览器模式和文本模式? 经常使用IE开发者工具的同学,肯定见过浏览器模式和 ...

  9. 【转载】web开发中 web 容器的作用(如tomcat)

    我们讲到servlet可以理解服务器端处理数据的java小程序,那么谁来负责管理servlet呢?这时候我们就要用到web容器.它帮助我们管理着servlet等,使我们只需要将重心专注于业务逻辑. 什 ...

随机推荐

  1. PHP com组件的使用 (环境搭建 以及测试)

    COM 组件在实际当前的软件开发中依然是比较重要,包括对于串口开发的人员,软件插件使用的人员,PHP 已经为我们添加了对于 COM的支持,可以很好的解决我们在开发中可能碰到的一些问题.一下是开发环境的 ...

  2. Cocos2d-x 2.2.3 使用NDK配置编译环境

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wwj_748/article/details/30072379 Cocos2d-x 2.2.3 使用 ...

  3. nyoj 三个水杯

    三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有标识,只 ...

  4. java中Thread类分析

    创建线程的方式有三种,一是创建Thread实例,二是实现Runnable接口,三是实现Callable接口,Runnable接口和Callable接口的区别是一个无返回值,一个有返回值:不管是Runn ...

  5. RabbitMQ-官方指南-RabbitMQ配置

    原文:http://www.rabbitmq.com/configure.html RabbitMQ 提供了三种方式来定制服务器: 环境变量 定义端口,文件位置和名称(接受shell输入,或者在环境配 ...

  6. java 线程转换图

  7. Elasticsearch 基础入门

    原文地址:Elasticsearch 基础入门 博客地址:http://www.extlight.com 一.什么是 ElasticSearch ElasticSearch是一个基于 Lucene 的 ...

  8. ALGO-5_蓝桥杯_算法训练_最短路

    记: 一开始没接触过关于最短距离的算法,便开始翻阅关于图的知识, 得知关于最短距离的算法有Dijkstra算法(堆优化暂未看懂),Bellman-Ford算法,Floyd算法,SPFA算法. 由于数据 ...

  9. bzoj2458 最小三角形

    Description Xaviera现在遇到了一个有趣的问题.平面上有N个点,Xaviera想找出周长最小的三角形.由于点非常多,分布也非常乱,所以Xaviera想请你来解决这个问题.为了减小问题的 ...

  10. 高可用服务设计之二:Rate limiting 限流与降级

    <高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <nginx限制 ...