移动跨平台开发跨家选型参考建议

news2025/1/15 16:33:01

从 iPhone 诞生至今,智能手机风靡全球已将近20年,智能手机操作系统 iOS 和 Android 也成为当仁不让的顶流般的存在,而作为其背后的灵魂,移动应用也随着技术的发展已经越来越丰富。如果从技术层面来讲,移动 App 也从最开始单一的原生开发(Native App)模式,演变出了混合开发(Hybird App)、网页应用开发(Web App),为什么会有这种发展的变化呢?

因为原有的 Native App 有一个明显的痛点,就是相同的功能需要在不同的平台上都实现一遍,所以就有了一个很迫切的需求,能否只需要写一次代码,就可以在各个端都运行?

移动跨平台的逻辑

跨平台开发从本质上讲是为了增加业务代码的复用率,减少因为要适配多个平台带来的工作量,从而降低开发成本。在提高业务专注度的同时,能够为用户提供一致的用户体验,实现“多快好省”的效果。

跨平台是跨哪些平台?怎么样的跨平台逻辑?从当前的实际情况来看,移动端跨平台需求主要集中在以下3点:

● 桌面端跨移动端:桌面向移动端过渡的早期,希望 PC Web 与移动 Web 复用同一套代码。
● Native 跨 Web:一套功能差不多的 Web 页能够在端外访问,需要跨 Native App 与 Web。
● 跨系统双端:出于开发效率等原因,希望 Android、iOS 双端复用一套业务代码,这也是目前主要的需求点。

而放眼未来,我们预见可能还会有这些跨平台需求:

● 跨小程序/轻应用:即用即走的轻量级应用,如各平台的小程序、 Android 快应用、iOS App Clips。
● 跨 IoT 设备:各种有显示屏的设备都会成为新的入口,如车载设备、智能电视等。

移动跨平台方案的发展

不仅是移动应用的开发模式在持续的演变,跨平台开发方案也紧紧的跟随着开发模式的变化持续的演进,按照技术的发展,跨平台方案可以分为三个时代。

1、Web 容器时代

基于 Web 相关技术通过浏览器组件来实现界面及功能,典型的框架包括 Cordova、Ionic 和微信小程序。Web 时代的方案,主要采用的是原生应用内嵌浏览器控件 WebView的方式进行 HTML5 页面渲染,并定义 HTML5 与原生代码交互协议,将部分原生系统能力暴露给 HTML5,从而扩展 HTML5 的边界。这类交互协议,就是我们通常说的 JS Bridge。
在这里插入图片描述

2、泛 Web 容器时代

采用类 Web 标准进行开发,但在运行时把绘制和渲染交由原生系统接管的技术,代表框架有 React Native、Weex 和快应用等。过渡到泛 Web 容器时代,优化了 Web 容器时代的加载、解析和渲染这三大过程,把影响它们独立运行的 Web 标准进行了裁剪,以相对简单的方式支持了构建移动端页面必要的 Web 标准(如 Flexbox 等),也保证了便捷的前端开发体验;同时,这个时代的解决方案基本上完全放弃了浏览器控件渲染,而是采用原生自带的 UI 组件实现代替了核心的渲染引擎,仅保持必要的基本控件渲染能力,从而使得渲染过程更加简化,也保证了良好的渲染性能。
在这里插入图片描述

3、自绘引擎时代

自带渲染引擎,客户端仅提供一块画布即可获得从业务逻辑到功能呈现的多端高度一致的渲染体验。Flutter,是为数不多的代表。Flutter 开辟了一种全新的思路,即从头到尾重写一套跨平台的 UI 框架,包括渲染逻辑,甚至是开发语言。
在这里插入图片描述

移动跨平台技术方案的对比

对比现有的跨平台技术和解决方案也可以分为三类,分别是 Web 跨端、容器跨端、小程序跨端。

1、Web 跨端

Web 跨端比较好理解,因为 Web 与生俱来就有跨端的能力,因为只要有浏览器或 WebView,现在绝大多数端上(甚至包括封闭的小程序生态)都支持 Webview,所以只要开发网页然后投放到多个端即可轻松跨平台,例如 Web App、PWA(Progressive Web Apps)、Hybrid App、PHA(Progress Hybrid App)。

优点:

● 没有额外的学习成本,一套基础技术吃天下
● 不依赖特殊的配套设施,从开发、调试到运维等所有工程化环节都是通用的
● 背靠 npm 庞大的生态,百万模块,应有尽有

缺点:

● 经常会遇到白屏、卡顿等情况,用户的体验不佳
● 无法调用系统的权限,例如多媒体、蓝牙、相机等
● 性能不好,对内存的消耗大

2、容器跨端

另一种统一多端的思路是将 Native 定制成标准容器,让同一份代码跑在一个个标准容器中。比较典型的代表是React Native 、Flutter、Weex,这类方案通过尽可能的取长补短,综合了 Web 生态和 Native 组件,让 JS 执行代码后用 Native 的组件进行渲染,以解决抛弃 Web 历史包袱的问题。

具体来讲 React Native 可以跨 Android、iOS、Web、Windows 四端,Flutter 可以跨 Android、iOS、Web、Linux 四端,Weex 可以跨 Android、iOS、Web 三端。

优点:

● Flutter 快速的开发,富有表现力的精美UI和类似本机的性能
● React Native 专注于用户界面,使应用程序开发人员能够构建高度可靠的界面
● Weex 页面就像开发普通网页一样;在渲染 Weex 页面时和渲染原生页面一样

缺点:

● React Native 没有提供的需要自定义的应用,仍然需要使用原生开发
● Flutter 构建的应用程序文件很大,没有广泛的资源基础,这意味着可能找不到开发所需的第三方库和包
● Weex 由于起步比较晚,社区活跃度不如RN,资料和开源项目也相对较少

3、小程序跨端

小程序跨端也比较好理解,就是让同样代码的小程序能够运行在多个 App 中,例如开发完一个小程序除了让其运行在微信之外,还能运行在支付宝、百度等超级App,甚至是自己的 App 中。

如果说小程序仍然是依靠 Web 技术运行的,那为什么还要单独去使用小程序呢?就像前面所说到的一样,Web 始终没法调用例如相机、蓝牙等这样的权限,并且用户使用体验会收到一定的影响。而小程序则不同,小程序具有强大的 Web 渲染引擎、提供丰富组件、支持本地缓存、避免 DOM 泄露等,并且其初衷是开放,例如微信、支付宝这样的超级 App 也都相继开放了小程序上架能力,小程序逐渐成为跨 App 的正规方式。

后期也甚至出现了例如 FinClip 这样的小程序容器,可以让个人或企业自己的 App 具备小程序的运行能力,让其他 App 能够具有超级 App 一致的小程序跨端能力。

优势:

● 具备类似 Native App 的体验度,使用较为流畅丝滑
● 可以获取用户的相册、多媒体、蓝牙等基础权限
● 可以通过便捷化的上下架方式完成相关页面和业务的热更新

缺点:

● 大平台的框架标准不统一,会稍微有影响,但都大同小异,W3C也在做小程序的标准化工作
● 部分的插件会用到原生相关的技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cloud-computing 实验镜像 chinaskills_cloud_iaas.iso chinaskills_cloud_paas.iso

Cloud-computing 实验镜像 最近因新项目再次进行云计算环境的搭建, 找这两个镜像( 找chinaskills_cloud_paas.iso chinaskills_cloud_iaas.iso)颇为费劲,用尽九牛二虎之力总算找到了,该大侠还分享了诸多系统镜像和完…

高衍射效率的偏振无关透射光栅的分析与设计

摘要 光栅,特别是具有与波长相当的特征尺寸的光栅,具有偏振相关的光学特性。 这使得设计的具有高衍射效率的光栅难以用于任意偏振。 根据文献[T. Clausnitzer, et al,Proc. SPIE 5252,174-182(2003)]中报道的概念&…

VMware-AD域控管理

目录 新建AD用户[ 以张三[zhangsan]、李四[lisi]为例 ] 2.用户信息-属性-管理-编辑: 3.将张三设置为AD域控管理员, 在wqd.com域下新建几个部门(IT、HR、PRD) 对从主机(win7)进行AD接管 修改win7计算机名称&…

MATLB|电动车智能充电模式及电力高峰需求预测

目录 0 写在前面 1 电动车 1.1 电动车(EV) 1.2 电动汽车充电 1.3 智能充电和车联网(V2G) 1.4 V2G 应用 1.5 可再生能源可用性 1.6 基于价格的收费 2 电动车智能充电 2.1 智能充电 2.2 实时电价 2.3 智能充电模式——算…

国产CPU对比

关于国产CPU:龙芯、飞腾、鲲鹏、海光、申威、兆芯 CPU 是计算机系统的核心和大脑 n CPU,即中央处理器是计算机的运算和控制核心,其功能主要是解释计算机指令以及处理计算机软件中的数据. CISC实际上是以增加处理器本身复杂度作为代价&#xf…

论文翻译:多延迟块频域自适应滤波器

Multidelay Block Frequency Domain Adaptive Filter 作者: JIA-SIEN SOO 和 KHEE K. PANG 文章目录Multidelay Block Frequency Domain Adaptive Filter1.介绍2.MDF自适应滤波器3.仿真结果和性能分析4.计算的复杂性5.结论摘要-本文提出了一种灵活的多延迟块频域自…

农村城镇面板数据集:地级市人均消费与支出2012-2019各省农村数据2013-2019

1、2002-2019年地级市人均消费与支出数据 1、数据来源:wind 2、时间跨度:2012-2019 3、区域范围:287个地级市 4、指标说明: 包含以下四个指标:人均可支配收入(农村)、人均可支配收入&#…

在el-table表头上引入组件不能实时传参bug

文章目录场景还原解决方法出现原因场景还原 产品要求&#xff1a;点击表格的表头&#xff0c;能触发一个下拉的列表&#xff0c;列表能携带表格的筛选条件&#xff0c;获取相应的数据 写了一个demo&#xff0c;来还原一下bug出现的场景&#xff1a; <div id"demo&qu…

Day15--加入购物车-初始化vuex

1.加入购物车&#xff1a; 我的操作&#xff1a; ************************************************************************************************************* 2.购物车里面的商品数据在多个页面都会用到。所以把购物车里面的商品数据存储在vuex里面&#xff0c; 我的…

11月29日:thinkphp框架->请求

回忆上节知识点 thinkphp官方文档解释 Rest控制器&#xff1a;主要是对资源进行控制&#xff0c;在thinkphp6.0开始废弃&#xff0c;推荐使用资源控制器 Rest控制器使用符合RESTFul风格&#xff0c;RESTFul方法和标准模式的操作方法定义主要区别在于&#xff0c;需要对请求类型…

Linux圈子里的“鲁大师“dmidecode-尚文网络xUP楠哥

~~全文共1189字&#xff0c;阅读需约5分钟。 进Q群11372462&#xff0c;领取专属报名福利&#xff0c;包含云计算学习路线图代表性实战训练大厂云计算面试题资料! Linux系统内核中有这样一个叫做DMI的东东&#xff0c;英文全称是Desktop Management Interface&#xff0c;翻译…

Ubutun搭建集群遇到的一些问题

安装部署K8s集群时会遇到很多问题&#xff0c;以下都是我踩过的坑&#xff0c;还有一些小坑当时没来得及记录&#xff0c;后续如果有遇到的话再进行补充。此处非常感谢江城琉璃梦同学对我的帮助。 1.工作节点执行kubectl get nodes时拒绝连接 执行指令&#xff1a;kubectl ge…

管理最忌讳用权管人

阅读本文大概需要 1.66 分钟。最近星球在更新一些系列课程&#xff0c;其中有一节课叫「怎样从技术人转型管理者&#xff1f;」应该很适合大多读者&#xff0c;毕竟关注我的读者里&#xff0c;做技术做管理的居多&#xff0c;所以这篇也发这里给大家分享下。程序员做技术的&…

网络结点中心性

结点中心性 node centrality 被认为是度量网络结点重要性的重要指标 常用的结点中心性有以下五种&#xff1a; &#xff08;以下各中心的概念在不同地方的定义可能不同&#xff0c;实际计算应查看使用工具的具体实现&#xff09; 1、度中心性 degree centrality 常被直接称为…

使用SPSSAU进行Roc联合诊断

1.基本思想 在一些医学临床研究中&#xff0c;有很多影响因素&#xff08;或者指标&#xff09;会对诊断起着作用。比如‘低出生体重儿’的出生&#xff0c;受到产妇年龄&#xff0c;产妇体重&#xff0c;产妇在妊娠期间是否吸烟&#xff0c;是否患有高血压共4项指标的影响。 …

一种高选择性和灵敏的荧光生物标记物,可用于标记碱性磷酸酶 (ALP),5-FAM-Alkyne,510758-19-7,荧光生物标记物

【中文名称】5-羧基荧光素-炔烃【英文名称】 FAM alkyne,5-isomer&#xff0c;5-FAM alkyne【结 构 式】 【CAS号】510758-19-7 【分子式】C24H15NO6【分子量】413.39【基团】炔基基团【纯度】95%【规格标准】5mg&#xff0c;10mg&#xff0c;25mg&#xff0c;包装灵活&#x…

LeetCode - 76 最小覆盖子串

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 76. 最小覆盖子串 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回…

基于java+springboot+mybatis+vue+elementui的会议管理系统

项目介绍 随着社会竞争压力的不断加强 &#xff0c;企事业单位内部的会议都在不断的增加&#xff0c;有效的会议可以提高企事业内部的沟通&#xff0c;更好的做出符合战略目标的决策。但是当下会议的交接工作一直是通过人们口头传达的方式来进行的&#xff0c;很明显这种方式比…

NLP文章和视频违规声明原创案例集锦

一、 文章违规声明原创案例集锦 平台鼓励用户就自行创作并发布的作品标识原创,但作品本身应符合以下前提: 1、受著作权法保护(如公开性质内容不具备著作权,则不在原创范围内) 2、不得侵犯他人权益(如未经授权使用他人内容,则不在原创范围内) 3、符合平台运营规范(…

C++利器STL——vector详解

要努力&#xff0c;但不要着急&#xff0c;繁花锦簇&#xff0c;硕果累累都需要过程&#xff01; 目录 1.vector的介绍及使用 1.1vector的介绍 1.2vector的使用 2.vector模拟实现 3.vector常见试题 1.vector的介绍及使用 1.1vector的介绍 1. vector是表示可变大小数组的序列容…