《PhoneGap精粹:构建跨平台的移动App》——1.4节为容器而设计

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

本节书摘来自异步社区《PhoneGap精粹:构建跨平台的移动App》一书中的第1章,第1.4节为容器而设计,作者 【美】John M. Wargo,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.4 为容器而设计
PhoneGap精粹:构建跨平台的移动App
PhoneGap应用程序是一款运行在客户端的原生应用程序容器中的Web应用程序。正因如此,PhoneGap应用程序中的Web应用程序使用的是HTML5应用程序的结构,而不是传统的基于服务端Web应用程序的结构。接下来就让我们看看这个不同的观点。

1.4.1 传统的Web服务器(Web 1.0)方式
对于传统的Web应用程序,Web服务器承载着静态的HTML页面或者动态页面,然后将这些页面返回给客户端(浏览器)。对于动态页面来说,服务器端的语言或脚本语言通常用于(比如从数据库)获取动态内容,还用于将这些内容在发回浏览器之前格式化为HTML。当浏览器发出一个请求时,服务器会去获取相应的页面和内容,然后将这些内容格式化成HTML(或其他类似的,比如XHTML),最后将这些内容发回浏览器显示。

这里我们假定浏览器不需要对内容对任何处理。浏览器只是请求页面,同时为了返回请求的内容服务器会做许多工作。在浏览器上,应用程序可以利用客户端JavaScript代码,让用户和页面上的内容交互,但通常大多数工作会在服务端完成。

1.4.2 Web 2.0方式
随着Web 2.0的出现,Web服务器的负载有了一个下降,取而代之的是在浏览器中运行
JavaScript代码来请求数据和展示数据。Web服务器向Web应用程序发送了一个基于HTML的封装,随页面一起发送过去的JavaScript代码会动态组织页面的内容区域,根据需要显示或隐藏数据内容。

Web 2.0应用程序之所以会成功主要是因为JavaScript中的XMLHTTPRequest(XHR) API。该API让web应用程序可以异步地向服务器发送请求,并当从服务器获取数据后处理这些数据,而不用打断用户的当前操作。许多PhoneGap应用程序都大量使用XHR与远程服务器交互。

该方式可以支持更多有趣的Web应用——看起来更像原生桌面应用的应用程序。虽然Web服务器还是需要用来承载提供给浏览器的页面和内容,但是几乎不会直接操作数据。Google Maps(http://maps.google.com)或Google Gmail(http://mail.google.com)都是很好的Web 2.0的例子。

1.4.3 HTML5方式
移动设备需要一个稍微不同的方式。虽然Web 1.0和2.0在智能机上可以很好地工作,但对Web 1.0的应用来说,在服务器和设备间需要传输大量的数据。对Web 2.0的应用来说,虽然没有这方面的问题,但是需要不断使用网络。Google甚至为了解决这个问题,发明了一项名为Google Gears(http://gears.google.com)的技术,该技术在客户端提供了一个SQL数据库和其他一些功能,用来保证即使无法访问Web服务器,Web应用程序仍然可以正常工作。但后来,他们停止了这个项目,转而投入帮助起草HTML5的标准。

通过HTML5,Web应用程序可以使用一些新的功能,这些功能在移动设备(或受限于网络连接的设备)上可以更高效地运行。通过HTML5,Web应用程序可以使用客户端的数据库去保存应用程序数据。对移动设备来说,这使得无论在有网络还是无网络的情况下,操作都会变得更简单。此外,HTML5还支持使用manifest(声明)文件,列出Web应用程序会用到哪些文件。当加载了Web应用程序的index文件时,浏览器将读取manifest文件,并且接收该文件中列出的所有文件,并下载到客户端设备中。如果移动设备无法连接到网络,只要manifest文件中列出的文件已经保存在了设备上,那么应用程序通过使用本地保存的数据还是可以继续工作的。

虽然我们需要为Web应用程序特地编写程序才能使用这些HTML5的能力,但该Web应用程序可以在浏览器容器(或在PhoneGap应用程序容器)中独立运行。通常,index.html文件只是应用程序中的HTML文件,同时该应用程序的不同“屏幕”1实际上只是根据需要移入移出的不同

容器。HTML5应用程序仍然需要向服务器请求所需的数据,你可以通过使用XHR异步地请求数据并根据需要保存在本地。

Web开发人员必须反复思考利用这些HTML5能力的Web开发方式。HTML5应用程序在移动设备上应该是可以自给自足2的,而不是向web服务器请求各种信息。

运行在PhoneGap应用程序中的web应用程序就是一个HTML5应用程序。

1译者注:指不同的显示界面。
2译者注:指不需要依赖Web服务器也可以独立运行。

相关文章
|
2月前
|
域名解析 网络协议 API
【Azure Container App】配置容器应用的缩放规则 Managed Identity 连接中国区 Azure Service Bus 问题
本文介绍了在 Azure Container Apps 中配置基于自定义 Azure Service Bus 的自动缩放规则时,因未指定云环境导致的域名解析错误问题。解决方案是在扩展规则中添加 `cloud=AzureChinaCloud` 参数,以适配中国区 Azure 环境。内容涵盖问题描述、原因分析、解决方法及配置示例,适用于使用 KEDA 实现事件驱动自动缩放的场景。
|
2月前
|
小程序 安全 JavaScript
构建即时通讯APP内的小程序生态体系:从架构设计到技术实现-优雅草卓伊凡
构建即时通讯APP内的小程序生态体系:从架构设计到技术实现-优雅草卓伊凡
117 1
构建即时通讯APP内的小程序生态体系:从架构设计到技术实现-优雅草卓伊凡
|
2月前
|
Java Shell Maven
【Azure Container App】构建Java应用镜像时候遇无法编译错误:ERROR [build 10/10] RUN ./mvnw.cmd dependency:go-offline -B -Dproduction package
在部署Java应用到Azure Container App时,构建镜像过程中出现错误:“./mvnw.cmd: No such file or directory”。尽管项目根目录包含mvnw和mvnw.cmd文件,但依然报错。问题出现在Dockerfile构建阶段执行`./mvnw dependency:go-offline`命令时,系统提示找不到可执行文件。经过排查,确认是mvnw文件内容异常所致。最终通过重新生成mvnw文件解决该问题,镜像成功构建。
|
8月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
150422 32
|
4月前
|
人工智能 自然语言处理 前端开发
从0到上线,CodeBuddy 如何帮我快速构建旅游 App?
本文详细介绍了AI代码助手CodeBuddy的功能与使用方法,并通过实战演示其在前端开发中的应用。文章首先讲解了CodeBuddy的安装步骤,以VS Code为例,引导用户快速上手。随后,通过构建一个旅游APP页面的实例,展示了CodeBuddy在生成代码、调整样式、修复问题等方面的能力。实战中涉及Craft模式交互、提示词优化、元素布局调整等内容,验证了插件的高效性与灵活性。尽管过程中遇到一些小问题,但整体效果令人满意。最后,文章鼓励开发者进一步探索CodeBuddy的潜力,为开发工作带来更多便利。
343 0
|
5月前
|
人工智能 开发框架 小程序
【一步步开发AI运动APP】二、跨平台APP AI运动识别方案介绍
本系列博文旨在帮助开发者从【AI运动小程序】迈向性能更优的【AI运动APP】开发。通过「云智AI运动识别」uni-app版插件,提供本地原生极速识别、精准姿态检测及运动计时计数功能,支持健身系统、线上赛事、学生体测、康复锻炼等多场景应用。插件无需云端依赖,一次付费永久使用,成本低且扩展性强。同时兼容uni-app与uni-app x框架,适合不同技术背景的开发者快速上手,助力抢占AI辅助运动市场。下篇将介绍插件引入,敬请期待!
|
7月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
对话|企业如何构建更完善的容器供应链安全防护体系
对话|企业如何构建更完善的容器供应链安全防护体系
|
7月前
|
人工智能 监控 安全
容器化AI模型的安全防护:构建可信的AI服务
在AI模型广泛应用的背景下,容器化AI模型的安全防护至关重要。主要安全威胁包括数据窃取、模型窃取、对抗样本攻击和模型后门攻击等。为应对这些威胁,需采取多层次防护措施:容器安全(如使用可信镜像、限制权限)、模型安全(如加密、水印)、数据安全(如加密、脱敏)和推理安全(如输入验证、异常检测)。此外,利用开源工具如Anchore Engine、Falco和ART等,可进一步加强防护。遵循安全开发生命周期、最小权限原则和深度防御等最佳实践,确保AI服务的安全性和可信度。
|
7月前
|
机器学习/深度学习 数据采集 人工智能
容器化机器学习流水线:构建可复用的AI工作流
本文介绍了如何构建容器化的机器学习流水线,以提高AI模型开发和部署的效率与可重复性。首先,我们探讨了机器学习流水线的概念及其优势,包括自动化任务、确保一致性、简化协作和实现CI/CD。接着,详细说明了使用Kubeflow Pipelines在Kubernetes上构建流水线的步骤,涵盖安装、定义流水线、构建组件镜像及上传运行。容器化流水线不仅提升了环境一致性和可移植性,还通过资源隔离和扩展性支持更大规模的数据处理。