开发混合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. oracle 以及 sql server mysql 空值默认值修改

    在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办? 1.MSSQL: ISNULL() 语法 ISNULL ( check_expression , replacem ...

  2. windows10密钥激活方法

    软件设计开发文档模板(国家标准)v1.1.rar 以上就是今天所分享Win10系统各个版本免费激活的windows密钥,希望win10专业版密钥可以帮助大家. 专业版:W269N-WFGWX-YVC9 ...

  3. BatSendMail

    @echo off echo ==================================echo == Compress Files And Send Mail ==echo ======= ...

  4. php 使用 file_exists 还是 is_file

    Jesns 提出 file_exists 比较老了,建议使用 is_file 来判断文件. 经过我的测试,is_file 果然快很多,以后可以改 is_file 来判断文件. 还有相关链接: is_f ...

  5. 51nod 1965 奇怪的式子——min_25筛

    题目:http://www.51nod.com/Challenge/Problem.html#!#problemId=1965 考虑 \( \prod_{i=1}^{n}\sigma_0^i \) \ ...

  6. Navicat导出opencart2.3数据字典

    步骤请参考:http://blog.csdn.net/maquealone/article/details/60764420 运行SQL:   备注:opcml是数据库名称. select TABLE ...

  7. Oracle 11G 单机asm安装

    http://sugarlovecxq.blog.51cto.com/6707742/1702092/

  8. AppScan代理扫描app/H5安全测试(没试过,记录在此)

    标签: 1.首先设置AppScan代理,设置如下:

  9. java web 程序---javabean代码,出现错误。奇怪,无法解释的运行问题

    深夜吧.这个点11点半了 写了一个简单的javabean实例,发现没有任何代码书写的错误,但是问题就是程序运行会有问题,然后换一个包,重写一个,问题没了? 请问问题出现在哪里了?巧合?还是操作有误?这 ...

  10. WebForm Response和Request以及Cookie

    Session:每一台电脑访问服务器,都会是独立的一套session,key值都一样,但是内容都是不一样的 以上所有内容,都跟cookies一样, 内置对象:用于页面之间的数据交互 为什么要使用这么内 ...