开发混合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. FastAdmin 插件的 Git 开发流程(简明)

    FastAdmin 插件的 Git 开发流程(简明) cms zip 安装 包安装 删除 addons 里的 cms 使用 mklink 软链接到 cms 插件 Git 仓库 修改 cms 插件 gi ...

  2. 【RAC】使用一条“ps”命令获取Linux环境下全部RAC集群进程信息

    如何仅使用一条ps命令便能获取到所有与RAC集群进程相关的信息.  从所使用的命令角度上看很简单,仅需使用ps命令结合grep命令便能实现.问题关键是需要确定检索哪些关键字. 1.与RAC集群有关的进 ...

  3. ZedGraph控件的使用

    http://blog.chinaunix.net/uid-20776117-id-1847015.html 在我们编写程序的时候,有时候是要做一些统计的,为了达到一目了然的效果,饼状图,曲线图,柱状 ...

  4. POJ1179 Polygon

    题目:http://poj.org/problem?id=1179 石子合并的升级版.有负值.但运算符只有 + 和 * . 考虑负值对原做法正确性的影响:之所以仅记录最大值可能不对,是因为有可能负数 ...

  5. 【Spring学习笔记-3.1】让bean获取spring容器上下文(applicationContext.xml)

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  6. 导入testng管理测试用例

    1.在pom.xml中增加testng的依赖,以导入testNG 2.在src-main-resources目录下新建xml文件,比如untitled.xml. <?xml version=&q ...

  7. 跨域获取json数据

    原文地址:http://my.oschina.net/LinBandit/blog/34570   前阵子做了一个前端动态加载json数据的应用,其中使用xmlhttprequest动态加载js,但是 ...

  8. 第10课 struct 和 union 分析

    1. struct的小秘密 (1)C语言中的struct可以看作变量的集合 (2)struct的问题——空结构体占用多的内存? [实例分析]空结构体的大小 #include <stdio.h&g ...

  9. 【Codeforces】CF 467 C George and Job(dp)

    题目 传送门:QWQ 分析 dp基础题. $ dp[i][j] $表示前i个数分成j组的最大和. 转移显然. 吐槽:做cf题全靠洛谷翻译苟活. 代码 #include <bits/stdc++. ...

  10. Hadoop(1.2.1)安装

    背景知识: 1.数据分布存储,不是复制存储 2.数据不动,代码动,由于分布式存储,所以把代码移动到数据的地方计算. 3.数据如何分割,hadoop提供的分割文件的编程接口 安装: 1.安装JDK 1. ...