跨端与同构开发技术一览

article/2025/10/15 13:27:40

关键词:React Native, uni-app, Flutter ,Tauri, Ionic 和 weex

文章目录

    • 前言
    • 跨端技术简史
    • 几种常见跨端技术对比
    • 小程序的繁荣
    • 跨端同构技术
    • uni-app
    • Taro
    • react-native-web
    • reactxp
    • Weex
    • 阿里的Rax
    • Remax
    • 去哪儿网的qrn-remax-unir
    • 去哪儿网的anu
    • Kbone
    • 腾讯新一代跨端开发框架Hippy
    • 滴滴出品的Hummer
    • Kraken 北海
    • Tauri
    • 通用 JSBridge 设计
    • 参考链接

前言

如今的软件开发,出现了web端、Android和iOS、桌面端(以Electron为主)、小程序五端竞发的局面。给中小公司带来很大的压力,就是一个业务要适配五种终端。即使是大公司,投入五套人马做开发也是一大挑战。于是,多端同构兴起,即一套代码多端运行,同时能做到同步更新。多端一致性,多端复用性。无论是 write once,run anywhere,还是 learn once,write anywhere ,不断的从成本和效率的角度去吸引开发者和企业的关注。

目前跨端技术百花齐放,给开发者带来不小的困惑。本文简单梳理一下各个技术特点,帮助大家有个基本的了解。优胜劣汰后,RN、flutter、Taro、uni-app 还保持着领先地位。

跨端技术简史

  • WePY,一款类 vue 语法规范的小程序框架,第一个版本是腾讯团队在 2016 年 12 发布。
  • Mpvue,是一个使用 Vue.js 开发小程序的前端框架,由美团团队在 2018 年 3 月开源。
  • Taro,是一个开放式跨端跨框架解决方案,由京东的凹凸实验室团队在 2018 年 6 月开源。
  • Uni-app,是一个使用 Vue.js 开发所有前端应用的框架,由 DCloud 团队在 2018 年 7 月开源。
  • Mpx, 是一款具有优秀开发体验和深度性能优化的增强型跨端小程序框架,由滴滴团队在 2018 年 12 月开源。
  • Chameleon,是一个有理想的能适应不同环境的跨端整体解决方案,由滴滴团队在 2019 年 8 月开源。
  • Remax,是使用 React 构建跨平台小程序的框架,由蚂蚁金服在 2019 年 8 月开源。
  • RN, 要求开发者学习React,要求精通Flex布局,要求原生开发协作。

几种常见跨端技术对比

RN,Flutter,taro, uni-app各有优劣,还是看你是什么类型的应用,你的团队成员技术栈。
老外对几种跨端技术的开发者比例的对比:
在这里插入图片描述
最近Flutter有压倒RN之势。

在这里插入图片描述

Flutter,要求开发者学习Dart,了解Dart和Flutter的API、要求精通Flex布局,要求原生开发协作。

Weex,已经内嵌到uni-app中,就不单独提了。

uni-app,要求开发者学习Vue,了解小程序。

在这里插入图片描述

小程序的繁荣

小程序分布图:
在这里插入图片描述

在这里插入图片描述

跨端同构技术

目前社区中已经有多个 React Native 三端同构方案,比较成熟的有 reactxp 和 react-native-web。

此外,React语法小程序跨端框架举例:

框架厂家特征
Kbone腾讯不限技术栈,微信小程序和 Web 端同构的运行时解决方案,模拟了一套dom和bom接口,用以兼容现有的前端体系,只能用于Web兼容微信小程序,无法满足其他平台小程序的开发
Taro1/2京东类React,静态编译型框架仅在开发时遵循React语法,编译后运行时与React无关
Nanachi去哪儿React,静态编译型框架
Rax阿里巴巴以运行时方案为基础,支持局部场景使用编译时方案。运行时的支持基于Kbone,使用的是类React语法的Rax框架
Remax蚂蚁金服使用原生React来构建小程序,运行时框架,从Remax2.0开始支持Web应用的构建
Taro3京东不限技术栈,使用一套runtime层来兼容各种DSL,诞生于Remax之后

uni-app

uniapp 其实就是 webview 包皮,性能上不及 rn 和 flutter 。好处是,它不仅可以编译成 iOS 和安卓,还能直接做成各个平台的小程序以及快应用。但是 bug 多也是很多开发者诟病的。如果是面向国内,uniapp 应该问题不大,毕竟大量小公司都在用,1 个程序员同吃所有端,甚至后台(unicloud),美其名曰新全栈。

在这里插入图片描述

在这里插入图片描述

Taro

Taro 是基于React技术栈的一个开放式跨端跨框架解决方案,京东凹凸实验室出品。支持使用 React/Vue/Nerv 等框架来开发 微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ / 飞书 小程序 / H5 / RN 等应用。目前Taro 3同时支持了React 和 Vue两种DSL。

react-native-web

把React Native的组件和API都用适用于Web的标签和API再适配实现一遍,使其在Web上的行为和在原生应用上尽量保持一致。
仓库地址:https://github.com/necolas/react-native-web

reactxp

reactxp 是一个跨平台的开源 UI 库,由微软 Skype 团队维护,Skype 产品中就大量使用了它来实现写一份代码运行在多个平台上。目前 reactxp 支持以下平台:

  • iOS/Android:基于 React Native 渲染。
  • Web:基于 react-dom 渲染。
  • UWP:基于 react-native-windows 渲染。
  • 其他平台 (如 Mac、Windows10 以下系统、Linux 桌面):基于 Web 渲染的 Electron 。

Weex

在这里插入图片描述

阿里的Rax

Rax是一款类 React 语法的前端框架,其与 React 的最大不同在于:React 用于 Web 页面的渲染,而 Rax 的目标则是 通用的跨容器的渲染引擎。

Remax

使用真正的 React 构建跨平台小程序。
地址:https://github.com/remaxjs/remax

去哪儿网的qrn-remax-unir

去哪儿前端团队的实现方案。一个用于将React-native转换到remax组件的库,此库对于react-native中的大部分组件,进行了到remax组件的映射,很多代码也直接修改自react-native-web,方便remax再转化到mini各端,是多端开发支持mini端的核心基础组件库。
仓库地址:https://github.com/qunarcorp/qrn-remax-unir

去哪儿网的anu

基于 React 语法的多端小程序开发框架。支持微信/支付宝/百度/头条/QQ小程序/快应用/H5等应用。
地址:https://github.com/qunarcorp/anu

Kbone

微信官方开始推广一个新的多端统一开发工具——Kbone,一个致力于微信小程序和 Web 端同构的解决方案。
跨端开发组合拳:小程序+kbone+finclip。

腾讯新一代跨端开发框架Hippy

Hippy一看就是淘宝Weex的对标项目,Kpi功能全面压制。所以官方支持 React 和 Vue 两种主流前端框架。Hippy 2.x 架构主要分成三层,UI(JS) 层 Hippy-React 和 Hippy-Vue 负责驱动 UI 指令生成;中间层 C++ HippyCore 负责抹平平台差异性和提供高性能模块;渲染层 Android 和 iOS 负责提供终端底层模块、组件,并与布局引擎通信。

滴滴出品的Hummer

Hummer 以 JS 引擎为基石,目前已支持 JavaScriptCore、Hermers、QuickJS 等业内知名 JS 引擎(这里本来还有个V8的,我删除了,源码里面没有,Kpi需要)。再配合经过调优的 Yoga 布局引擎,抹平了两端视图布局差异(性能更佳的自研布局引擎开发中)。

Hummer 的特点是抛弃了业界其他动态化跨端框架普遍使用的DSL层和VDOM层,因此原生 Hummer 不具备前端开发常用的响应式编程的能力,但同时换来的是接近原生开发的体验和性能。再以原生 Hummer 为基础,在此之上开发了一套基于MVVM架构的开发框架 —— Tenon ,通过 Tenon,可以把使用 Vue/React 编写的代码,转换成原生 Hummer 的代码。

Kraken 北海

「Kraken 北海」是一款高性能Web渲染引擎。底层基于 Flutter 进行渲染。Kraken 不限制上层开发者使用的框架,无论你是使用 Vue 、Rax 还是 React 都可以开发 Kraken 应用。Kraken 的 runtime 通过 JS Engine Binding 的方式提供了一系列 Web 标准的 API 接口,调用相应 API 会执行相关逻辑并创建一系列需要发送给 Dart 层处理的指令。

Tauri

Tauri 是一个跨平台 GUI 框架,与 Electron 的思想基本类似。Tauri 的前端实现也是基于 Web 系列语言,Tauri 的后端使用 Rust。Tauri 可以创建体积更小、运行更快、更加安全的跨平台桌面应用。

通用 JSBridge 设计

有时RN和H5需要利用一些底层的能力,在 Native 层,RN 和 H5 可以共用一份 JS Bridge 实现。底层的一些通用服务能力,分别通过两个 Bridge 暴露上去,可以让 H5 和 ReactNative 直接调用:
在这里插入图片描述

参考链接

  • taro
  • taro入门
  • https://github.com/NervJS
  • https://nerv.aotu.io/
  • https://github.com/alibaba/weex
  • https://taro.zone/
  • 微信小程序开发文档

http://chatgpt.dhexx.cn/article/IAZ0WxbO.shtml

相关文章

@开发者,一份微软官方Github上发布的开源项目清单等你签收

最近在倒腾WPF的项目,试着搜一下微软官方提供的WPF Smaples, 结果找到了https://github.com/Microsoft/WPF-Samples. 当然还发现了Cortana相关的开源资料http://microsoft.github.io/UWPQuickStart/docs/challenges/cortana-integration.html和UWP资源http://micros…

React Native 三端同构实战

WeiboGoogle用电子邮件发送本页面 0 React Native 三端(Web、iOS、Android)同构是指在不改动原 React Native 的代码下,让其在浏览器中运行出和在 React Native 环境下一样的页面。对于使用 React Native 开发的页面,如果又单独为…

reactxp搭建,start:windows运行不起来

1、官网 reactxp 2、VSCode和Visual Studio2019 安装VSCode Visual Studio 下载地址 先不用勾选工作负荷,直接安装 3、安装nvm 访问下载地址下载安装nvm: 百度云分享 官网直装链接 nvm的github发行界面下载nvm-setup.exe GitCode镜像下载nvm-setup…

微软发布ReactXP:方便开发者构建跨平台应用

说起跨平台开发工具,开发者们最先想到的无外乎是 Cordova 和 Xamarin。但是前者无法提供足够令人满意的性能表现,而后者在 Web 开发上心有余而力不足。所以,微软 Skype 团队基于 React JS 和 React Native 开发了一款全新的跨平台开发工具 —…

跨平台技术实践案例: 用 reactxp 重写墨刀的移动端

重新编写,又一次,我们又一次重新编写了移动端应用和移动端网站。要重新编写是一个风险很大的决定,但是其必要性以及它所带来的收益是我们无法拒绝的。这篇文章会分享我们为什么这么做,我们是怎么做的,以及这次重写后为…

ReactXP入门指南

ReactXP入门指南 1.ReactXP介绍 ReactXP使用了React框架,使得开发人员可以使用React开发他们的跨平台任务。 React的理念是“学习一次,写在任何地方”。使用React和React Native,应用程序可以与iOS和Android应用程序共享大部分逻辑&#x…

SfM、VO和SLAM介绍

一家之言,仅作分享,如有不合理或需要改进的地方,欢迎各位讨论。 前言 在自动驾驶地图定位模块的功能开发中,主要研究方向分为三种:建图、里程计、定位。SfM(Structure From Motion)即 传统三维…

SfM: Structure from motion

SfM Structure from motion (SfM) is the process of estimating the 3-D structure of a scene from a set of 2-D images. 运动结构(SfM)是根据一组二维图像估计场景的 3-D **结构的过程。 注意Motion是指相机在移动 SFM通常用来建立image structu…

经典/深度SfM有关问题的整理

这篇博客主要是记录一些实践或看论文过程中遇到的一些不好理解的问题及解释。      Q1:SfM里的尺度不变性指的是什么?   A1:一般定义下,尺度不变性是指体系经过尺度变换后,其某一特性不变。比如,特征…

OpenCV实现SfM(一):相机模型

注意:本文中的代码必须使用OpenCV3.0或以上版本进行编译,因为很多函数是3.0以后才加入的。 目录: 文章目录 #SfM介绍 SfM的全称为Structure from Motion,即通过相机的移动来确定目标的空间和几何关系,是三维重建的一种…

Structure From Motion(SFM)入门讲解

概念: Structure From Motion(SFM) 是从一系列包含视觉运动信息的多幅二维图像序列中估计三维结构的技术。 SFM和立体视觉的区别 在立体视觉中,两个相机之间的相对位姿是通过标定靶精确标定出来的,在重建时直接使用三角法进行计算&#x…

[CV] Structure from motion(SFM)- 附我的实现结果

【更新】我的新博客:www.ryuzhihao.cc,当然这个csdn博客也会更新 本文在新博客中的链接:点击打开链接 完成时间:2017年2月27日 博客时间:2017年4月26日 去年,我有幸了解到image-based mode…

SFM(structure-from-motion)实现流程详细介绍

SFM(structure-from-motion)算法是一种基于各种收集到的无序图片进行三维重建的离线算法。顾名思义是从运动中(不同时间拍摄的图片集)恢复物体的三维结构,这需要估计出图片的R,t,结合相机内参重建稀疏点云。…

SFM算法介绍

背景 股票市场存在着短线、中长线、长线等不同频率的交易模式,这些交易活动决定了股票价格的变动。为了对股票价格进行预测,该文章提出了一种循环神经网络SFM,可以从股票价格的时序数据中捕捉多种频率的交易规律,从而做出短期/长…

增量式SfM详细流程介绍及实现方法

目前主流的SfM(Structure from Motion,运动结构恢复)可以分为两大类型,一种是全局式的,一种是增量式的。全局式(Global)sfm能够一次性得出所有的相机姿态和场景点结构。它通常先求得所有相机的位…

SLAM和SFM有什么区别?

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 自古以来,人们惆怅千年要解决的问题: 定位、定向. 当然了还有我是谁?我在哪里? 在这个时候, SLAM与SFM 横空出世. 这两兄弟叱咤乾坤,成为人们解决上述问题的得力帮手. SFM SFM即Struct…

SFM问题简介

最近在学习opencv的知识,遇到的一些知识点和理解记录下来,由于还是小白,有所不对的地方,大家一起交流沟通 Structure from motion,简称为SFM,是单目相机在物体周围不同的角度拍摄不同的图片,而相…

SfM详细流程介绍

增量式(Incremental)sfm则是一边三角化(triangulation)和pnp(perspective-n-points),一边进行局部BA。这类方法在每次添加图像后都要进行一次BA,效率较低,而且由于误差累积,容易出现漂移问题;但是增量式sfm的鲁棒性较高。 增量式sfm初始化 初始化主要是指选取两张匹…

主流SFM处理方式的梳理

SFM是什么? SFM即Structure-from-motion运动结构重建,从大批量图像数据出发,通过相关处理,获取目标图像集3D几何(结构)和摄像机姿态(运动)信息,主要处理流程可分为如下几…

SFM过程(一)

以图像为基础的三维重建过程SFM基本如下图所示&#xff1a; 以SfM-Toy-Library代码为例&#xff0c;如下&#xff1a; ErrorCode SfM::runSfM() {if (mImages.size() < 0) {cerr << "No images to work on." << endl;return ErrorCode::ERROR;}//in…