全方位介绍如何使用原生与混合移动框架进行移动应用程序开发

本文探讨了全栈移动开发环境的功能,并介绍了若干个核心的原生和混合移动备选方案以及影响每个平台选择的因素。

首先,我们来弄清楚一些概念。看到全栈一词时,我们很容易联想到一个人几乎样样精通,既具备系统管理员的技能,也具备数据库工程师的技能。在某些特殊情况下,可能刚好需要全栈开发者。通常全栈开发者既熟悉前端框架、后端数据库和服务的业务逻辑和流程,也能自动创建、编辑和配置应用程序和数据。他们制作和编辑媒体的能力相对较弱,因为媒体需要的是展示和交互。

全栈移动应用程序开发是衔接内容与技术的纽带。现在,全球有数十亿人使用智能手机和平板电脑,这些智能手机和平板电脑便构成了全栈应用程序的客户端。服务器端通常是微服务、认证服务器和 CDN 资产(每次打开应用程序时在运行时进行编译)的分布式集合。这两者是通过流程来衔接的,这些流程包括测试、持续集成和持续部署、扩展和容器化以及专有设备要求。

设备正在决定媒体的展示和使用方式。在许多情况下,与传统电视和广播相比,人们更倾向在手持式设备上观看、阅读或收听新闻与娱乐资讯。电视本身就是开发者的设备目标。

作为技术的纽带,移动设备推动了 Apple、Google、Facebook 和 Microsoft? 等大型跨国公司的竞争范式。这些商业巨头都对抢占设备受众有极大的兴趣。虽然 Apple 和 Google 分别代表 iOS 和 Android 两大品牌阵营,但您可以使用后两者公司的 React Native(Facebook)和 Xamarin(Microsoft?)产品来开发在设计和功能上越来越本土化的应用程序。许多科技公司正在竭尽全力地在这个市场中保持持续增长,并且正在积极寻找最先进且最有前景的技术,帮助实现其提供最佳服务的愿景。

全栈移动开发

要成为全栈移动开发者,您需要对应用开发的全局有一个了解。

这包括:

  • 设备界面外观
  • 可访问来获得内容和进行数据处理的服务器和容器
  • 开发流程,如测试和调试
  • 在许多备选方案中选择解决方案的理由和权衡因素

如果必须要选择全栈开发者具备的最可取特质,那么将会是领导项目并有效沟通易于理解的流程的能力。全栈开发者必须能够设置代码库、项目管理工具(例如 Jira)、通信应用(例如 Slack),并且必须熟悉各种客户机框架、数据库、API 和微服务。总而言之,他们必须能够支持和影响项目管理决策。全栈开发者除了具备客户机和服务器堆栈能力外,还与应用程序的架构师或项目经理共享许多特质。

全栈移动开发的客户端

从广义上讲,客户端可分为原生和混合两座孤岛。通常,当需要更高的性能时,您希望尽可能都是原生客户端。混合开发的优势往往来自使用熟悉的 Web 工具和构造。开发者通常需要选择是从头开始学习并使用一种语言,例如 Swift 或 Kotlin,还是沿用已经熟悉的语言(例如 JavaScript 和 CSS)。混合开发的另一个优势是,可能会对多台设备使用同一组组件和样式。每台设备都有自己特有的外观品质,但与原生应用程序不同,这些品质可能来自同一个来源。

全栈移动开发的服务器端

服务器端的移动应用开发很大程度上类似于桌面或 Web 服务器应用程序开发。不同之处包括:在设备上安装新应用程序(即 Apple Store 或 Google Play)的方式受限制;服务器端功能都绑定到同一操作系统,以及可使用特定服务(例如 Meteor 或 Ionic)更新设备应用程序的方式有细微差别。相似之处包括:通过 API 调用与数据交互的方式;通过版本控制更新内容,以及确保可扩展性和持久性。在整个项目中,全栈开发者通常会研究如何在构成应用程序服务器端的各个微服务层之间实现处理负载、缓存负载和其他任务负载的最佳平衡。

全栈移动开发环境的特性

全栈移动应用开发者可能需要确保其生产环境具备以下特性。与后端或前端问题相比,全栈开发者可能更熟悉这些特性。

  • 自动化:我们通常是通过持续集成和持续部署之类的术语来了解"自动化"概念。对于当前的移动应用开发者而言,使更新不会破坏应用程序或使应用程序脱机,这一点至关重要。
  • 可扩展性:从设计角度讲,可扩展性与自动化密切相关,也是处理部署的。这包括容器化(例如     Docker)以及数据库和磁盘冗余,可确保可靠性并防止数据丢失。如果未正确设计可扩展性,那么开发者的前期工作越成功,后期的扩展工作就越困难。CDN、缓存以及在网络中添加和移除区块的能力都会导致这一现象。
  • 反馈环:可以在多个位置提供用户反馈,以便为开发者提供指导。这可以包括测试框架和构建机制,也可以包括通过界面或会话跟踪来获取用户反馈,以了解用户通常使用应用程序的方式或者用户无法使用哪些应用程序功能。
  • 辅助功能选项、国际化和本地化:利用个人增强功能(例如,辅助功能选项、语言和本地化),可以接触到以前被忽视的群体,从而为更广泛的受众提升应用程序的价值。如果使用变量代替文本,那么实现本地化和国际化就毫无意义。辅助功能选项尚未在     Web 内容设计中扎根。例如,与 Internet Explorer     用户数相比,有更多人可以使用辅助功能。当考虑服务难度不大的市场规模时,移动开发者应承担起责任并努力解决这些问题。通过平衡对开发时间的影响,可以实现每一个辅助功能的优势。

选择移动开发框架

选择适当的工具组合来构建移动应用取决于多个条件,包括:

  • 工具的易用性及其生态系统
  • 与设备相符的内容外观,包括字体和图
  • 用户体验和激赞效果
  • 与第三方 API 和网络服务的集成
  • 社区支持:通过 fork、star、点赞和其他其他评价机制判断
  • 文档和当前示例
  • 对于先前已知代码和构造的熟悉程度(例如,熟悉 React 或 ReactNative 框架)

竞争需求影响软件选择的程度取决于多种因素,包括时间、预算和人群目标。通常都没有最佳答案,但是出于某些原因,对于特定的应用程序和目标受众来说,某些方法比其他方法更有意义。 表 1 展示移动应用程序开发的六种常用工具。

乍看起来,您已经可以确定,如果要包含 iOS 目标群体,那么您需要 Apple ID 以及关联帐户并安装 XCode。对于 Android,虽然此处不明确,但是通过 Android Studio 可最轻松地访问设备模拟器。这通常表明最快速的应用是采用 Apple 或 Google 支持的软件所编写。其他四种工具的较大优势来自将常用代码集成到原生应用中,这意味着 Web 开发者会由于生产期间的学习曲线损失较少时间。

IDE、CLI 和包装器

集成开发环境(IDE)的普及时间超过因特网。命令行界面(CLI)虽然早于 IDE,但是通过开源经历了重生,接纳 CLI 作为如今创建应用的最典型方式。移动应用程序引入了包装器技术的概念:类似 Web页面上的某个插件,与其周围的浏览器包装器进行通信。

例如,在 React 中构建应用程序时,在发布该应用程序之前会进行转换。在该过程中,代码按照 Webpack 配置文件中的定义,转换为在所有目标设备和浏览器中都适用的内容。如果在设备的包装技术中融入此过程,那么将涉及类似于将 Babel 或 Typescript 执行的转换应用于客户机应用程序整体的操作。包装器是与其自身(其父代)以及其子代通信的 shell(命令解析器)。

几种经过审核的软件包括 IDE、版本控制、部署和 CLI 配套软件;其他软件需要包装技术才能编辑移动应用。例如,Ionic 通常在 Cordova 包装器中进行编写,Xamarin 和 React 也可以如此。在 Mac 上使用 XCode 编写 iOS 非常重要。它是用于为 Apple 设备开发原生应用程序的软件的唯一必备项。Apache Cordova 因为能够导出到浏览器而脱颖而出。对于希望具有单个适用于移动 Web 和设备应用程序的代码库的人员而言,Apache Cordova 由于针对大多数平台而保持位列首选。请参阅表 2 以获取每个移动开发框架的 IDE、CLI、操作系统和语言比较。

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java