开发混合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. flash TweenMax用法

    二,TweenMax主类: 这里分几个大块来介绍,分别是:第三个参数特有属性(29个),PlugIn(17个),公共属性(10个),公共方法(20个). 1,第三个参数特有属性(29个): 这29个参 ...

  2. windows 安装操作系统时切换分区表格式

    在出现分区管理界面时,按下shift+F10呼出命令行,输入diskpart 后尝试如下命令将磁盘分区表手动转换到MBR. list disk ---- 显示当前磁盘列表 select disk x ...

  3. Tomcat 去除项目名称

    再tomcat的conf下server.xml  里, 再<host>...</host>的标签之间添加 <Context path="" docBa ...

  4. JS 响应式布局

    1.media 效果为屏幕宽度变化时,背景颜色也变化 <!DOCTYPE html> <html lang="en"> <head> <m ...

  5. RK3288 mipi屏调试流程

    CPU:RK3288 系统:Android 5.1 1.修改kernel/arch/arm/configs/rockchip_defconfig,打开mipi屏开关 # CONFIG_LCD_GENE ...

  6. [转]StarWind模拟iSCSI设备

    StarWind模拟iSCSI设备 url: http://jimshu.blog.51cto.com/3171847/590412/  标签:职场 iSCSI 休闲 StarWind 原创作品,允许 ...

  7. 使用Jquery实现Win8开始菜单效果的站点导航

    前言: 本人是个Metro控,自我感觉到处都充斥着Metro的元素,个人认为这种风格强调表现以及内容,以简洁著称,不过也不是大部分都喜欢,也有一些人和你讨厌这种风格~不过本人非常喜欢这种风格,看我博客 ...

  8. adb命令查看app的日志

    前言 在做app测试的时候,经常会遇到异常,此时如果开发没有异常保存,那么测试就得通过adb命令来查看日志信息.基于Windows平台的操作: logcat输出日志 一.把日志输出到手机指定目录 其命 ...

  9. CSS 标签实例一 homepage.css

    #overlayer { position: absolute; //指定一个元素(静态的,相对的,绝对或固定)的定位方法的类型. /*top: 50px;*/ left: 0; //定义了定位元素左 ...

  10. python中for...if...构建List

    1.简单的for...[if]...语句 >>> a=[12, 3, 4, 6, 7, 13, 21] >>> newList = [x for x in a] & ...