开发混合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. 系列文章--jQuery教程

    从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQu ...

  2. 产品思维&技术思维&工程思维

    产品思维 产品思维的起源是用户(或客户)价值.用户价值是通过技术手段以产品或服务的形态去解决用户的痛点,或带去爽点.毫无疑问,工程师在日常工作中应时刻关注并理清自己的工作与用户(或客户)价值的联系,并 ...

  3. 设置zedgraph鼠标拖拽和局部放大属性(转帖)

    说一下几个属性的意义和具体应用: (1)鼠标拖拽显示区域 PanModifierKeys ->> Gets or sets a value that determines which mo ...

  4. Joyoi公路乘车(原tyvj1015)

    题目:http://www.joyoi.cn/problem/tyvj-1015 水题.连优化都不用. #include<iostream> #include<cstdio> ...

  5. python初始环境安装

    Python下载地址 Python官网:https://www.python.org/ 在该网可以下载Python最新及历史版本.可以下载基于Windows或其它操作系统的版本. Python安装 本 ...

  6. Linux 后台进程管理

    fg.bg.jobs.&.ctrl + z命令一. &加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &,二.ctrl + z可以将一个正在前台执行的命令放到后台 ...

  7. Android免费短信验证

    转载请注明住处:http://blog.csdn.net/crazy1235/article/details/41912003 介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息 ...

  8. java web程序 String的valueOf方法总集

    在代码中用到类型转换的时候,是一个字符,然后当用户在网页中输入的是字符串, 字符转换成字符串的方法是: String.valueOf(char c);就好了 这样在写验证码的时候,网页端的就是字符串形 ...

  9. DP Coins hdoj

    Coins Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submiss ...

  10. 关于json_encode()的使用注意

    json_encode($json_str,true)在一般情况下可以返回一个数组,但当$json_str的字符编码是GBK或其它时,返回的是一个 空数组,必须用iconv(‘gbk’,‘ut8//I ...