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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介:

本节书摘来自异步社区《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服务器也可以独立运行。

相关文章
|
28天前
|
测试技术 API Docker
使用ruri快速构建跨架构chroot容器
【8月更文挑战第22天】本指南介绍如何使用 ruri 工具快速构建跨架构 chroot 容器。首先需安装 ruri,并确保系统满足安装要求。接着确定目标架构(如从 x86 到 ARM),并准备好相应的工具链和依赖库。利用 ruri 的命令行工具启动容器构建流程,指定源与目标架构及基础镜像。构建完成后可进一步配置和定制容器,安装所需软件包与调整系统设置。随后通过运行测试用例验证容器功能,解决发现的问题。最后将测试合格的容器部署至生产环境,利用容器管理工具进行管理和运行。在整个过程中要注意架构间的差异与兼容性问题,并确保系统环境稳定,定期更新 ruri 和相关组件。
|
2天前
|
负载均衡 网络协议 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基本概念和类型,包括桥接网络、宿主网络、覆盖网络和 Macvlan 网络等,并提供了创建、管理和配置自定义网络的实用命令。通过掌握这些知识,开发者可以构建更健壮和灵活的容器化应用,提高应用的可扩展性和安全性。
|
1月前
|
Web App开发 Android开发
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
实时数据传输在互联网中至关重要,不仅支持即时通讯如QQ、微信的文字与图片传输,还包括音视频通信。一对一通信常采用WebRTC技术,如《Android Studio开发实战》中的App集成示例;而一对多的在线直播则需部署独立的流媒体服务器,使用如SRT等协议。SRT因其优越的直播质量正逐渐成为主流。本文档概述了SRT协议的使用,包括通过OBS Studio和SRT Streamer进行SRT直播推流的方法,并展示了推流与拉流的成功实例。更多细节参见《FFmpeg开发实战》一书。
38 1
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
|
22天前
|
Cloud Native 持续交付 Docker
云原生入门指南:构建你的首个容器化应用
【8月更文挑战第30天】云原生技术,作为现代软件开发的风向标,正在改变我们构建、部署和管理应用程序的方式。本篇文章将引导你了解云原生的核心概念,并通过一个简单的代码示例,展示如何将传统应用转变为容器化的云原生应用。无论你是新手开发者还是希望扩展知识的IT专业人士,这篇文章都将是你探索云原生世界的起点。
|
1月前
|
缓存 开发者 Docker
Dockerfile是Docker容器化过程中的核心组件,它允许开发者以一种可重复、可移植的方式自动化地构建Docker镜像
【8月更文挑战第19天】Dockerfile是构建Docker镜像的脚本文件,含一系列指令定义镜像构建步骤。每条大写指令后跟至少一个参数,按序执行,每执行一条指令即生成新的镜像层。常用指令包括:FROM指定基础镜像;RUN执行构建命令;EXPOSE开放端口;CMD指定容器启动行为等。优化策略涉及减少镜像层数、选择轻量基础镜像、利用缓存及清理冗余文件。示例:基于Python应用的Dockerfile包括设置工作目录、复制文件、安装依赖等步骤。掌握Dockerfile有助于高效自动化构建镜像,加速应用部署。
24 1
|
1月前
|
运维 监控 Devops
构建高效自动化运维体系:DevOps与容器化实践
【7月更文挑战第44天】在现代IT基础设施管理中,自动化运维已成为提升效率、降低成本、确保系统稳定性的关键。本文将探讨如何通过结合DevOps理念和容器化技术来构建一个高效的自动化运维体系。我们将分析这一体系对提高软件交付速度、优化资源利用率以及增强系统可靠性的积极影响,并提供一系列实施策略和最佳实践,帮助企业实现运维自动化转型。
|
1月前
|
存储 Kubernetes 调度
通过重新构建Kubernetes来实现更具弹性的容器编排系统
通过重新构建Kubernetes来实现更具弹性的容器编排系统
49 8
|
20天前
|
Android开发 iOS开发 C#
Xamarin:用C#打造跨平台移动应用的终极利器——从零开始构建你的第一个iOS与Android通用App,体验前所未有的高效与便捷开发之旅
【8月更文挑战第31天】Xamarin 是一个强大的框架,允许开发者使用单一的 C# 代码库构建高性能的原生移动应用,支持 iOS、Android 和 Windows 平台。作为微软的一部分,Xamarin 充分利用了 .NET 框架的强大功能,提供了丰富的 API 和工具集,简化了跨平台移动应用开发。本文通过一个简单的示例应用介绍了如何使用 Xamarin.Forms 快速创建跨平台应用,包括设置开发环境、定义用户界面和实现按钮点击事件处理逻辑。这个示例展示了 Xamarin.Forms 的基本功能,帮助开发者提高开发效率并实现一致的用户体验。
47 0
|
20天前
|
容器 iOS开发 Linux
震惊!Uno Platform 响应式 UI 构建秘籍大公开!从布局容器到自适应设计,带你轻松打造跨平台完美界面
【8月更文挑战第31天】Uno Platform 是一款强大的跨平台应用开发框架,支持 Web、桌面(Windows、macOS、Linux)及移动(iOS、Android)等平台,仅需单一代码库。本文分享了四个构建响应式用户界面的最佳实践:利用布局容器(如 Grid)适配不同屏幕尺寸;采用自适应布局调整 UI;使用媒体查询定制样式;遵循响应式设计原则确保 UI 元素自适应调整。通过这些方法,开发者可以为用户提供一致且优秀的多设备体验。
32 0
|
24天前
|
缓存 资源调度 Kubernetes
阿里云云效产品使用合集之如何将两个独立的代码仓库构建并部署到同一个容器内
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。