跨渠道开发优势

一套代码,多端运转(iOS、Andriod、MacOS、Windows、Linux、Web、小程序…)。

增加事务代码的复用率,削减多个渠道适配的工作量,然后降低开发本钱, 带来直接的经济效益

在进步事务专心度的一起,为用户提供一致的用户体会,到达多快好省效果。

本文首要探讨如下跨渠道计划

如何选择移动端/桌面端跨平台方案

  1. Flutter 自带烘托引擎,提供画布到达从事务逻辑到功用出现的多端高度一致的烘托体会。
  2. Web开发+原生烘托 选用类Web规范进行开发,运转时把制作和烘托交由原生体系接收
    • React Native
    • Week
  3. Web开发+Web烘托 基于Web相关技能, 经过Web浏览器组件来完成界面及功用
    • Ionic
    • 微信小程序
    • Electron
  4. C++ 运用高功能可移植的C++言语, 一次编码多端编译来完成跨渠道开发, 适用于中心渠道是桌面端的企业
    • 原生UI + C++
    • QT + C++

各个跨渠道计划比照

跨渠道计划 Flutter Web技能+原生烘托 Web技能+Web烘托 C++
功能 一般
开发功率 一般
社区生态 活泼 一般 活泼 一般

Flutter

Flutter是Google的移动UI框架,可以快速在iOS/Android/PC上构建高质量高功能原生用户界面App。

如何选择移动端/桌面端跨平台方案

烘托引擎依靠跨渠道的Skia图形库来完成,Skia引擎运用Dart构建笼统的视图结构然后加工成GPU数据,交由OpenGL终究提供给GPU烘托,最大程度上确保App在不同渠道、不同设备上的体会一致性。

支持JIT(Just-in-Time,即时编译)和AOT(Ahead-of-Time,预编译), 统筹开发功率和运转功率

缺陷:

  • 桌面端功用不行完善, 信任随着后面的迭代会进一步增强

Web开发+原生烘托

裁剪了Web规范,保留了构建移动端页面必要的Web规范,运用JavaScript开发确保了快捷的前端开发体会;

如何选择移动端/桌面端跨平台方案

抛弃了浏览器控件烘托,运用原生UI组件代替中心的烘托引擎,仅坚持必要的基本控件烘托才能,然后使得烘托进程更加简化,也确保了良好的烘托功能

React NativeWeex是这种计划的佼佼者。

Web开发+Web烘托

运用Web开发+WebView/Chromium加载网页

JS Bridge(桥): H5与原生代码交互协议,将部分原生体系才能露出给H5,然后扩展H5的才能。

既有原生代码也有Web代码,因而被称为Hybrid开发模式。因为H5代码只需求开发一次,就能一起在多个体系运转,大大降低了开发本钱。

如何选择移动端/桌面端跨平台方案

选用了Web开发技能,社区资源丰富。

浏览器加载H5页面进程

  1. 加载H5页面的HTML主文档;
  2. 如果遇到CSS文件,浏览器另外宣布一个请求去获取;
  3. 遇到图片资源,浏览器也会另外宣布一个请求去获取。
  4. 遇到JavaScript文件,因为JavaScript代码可能会修改DOM树,因而HTML文档会挂起烘托(加载解析烘托同步)的线程,等到JavaScript文件加载解析并执行结束,才可以恢复HTML文档的烘托线程
  5. JavaScript代码中有用到CSS文件中的特点款式,所以堵塞,等待CSS加载结束才能恢复执行。

加载、解析和烘托进程是耗时操作, 使得这种计划功能很差

原生UI + C++

运用高功能可移植的C++言语, 一次编码多端编译来完成跨渠道开发

一次编码, 运用GCC/Clang编译成iOS/mac下的dylib,Android/Linux下的so,win下的dll

如何选择移动端/桌面端跨平台方案
C++完成中心的网络+数据存储+加解密+中心事务+接口界说, 所以能做到各个渠道通用

各个渠道基于C++界说的接口开发自己的UI, 所以不存在兼容性问题

C++ 是桌面端开发最重要的言语, Windows/Linux官方言语就是C++, MacOS开发中C++也是很重要的言语

缺陷:

  • 学习难度高:C++ 语法和概念相对杂乱,需求必定的学习和实践经验。
  • 开发调试难度大:会出现一些渠道特有的问题,需求理解各个体系的差异性和兼容性, 并进行更多的调试和测试。

QT + C++

Qt 是跨渠道的 C++ 开发框架。提供了集成的开发环境,跨渠道开发桌面、移动和嵌入式App。开发者经过简单的 API 编写可移植的代码。

QT完成了内存办理/网络/数据/UI等功用, 屏蔽了底层的操作体系和渠道差异。完美的避免了上一套C++计划的缺陷

自绘引擎,界面上的按钮和文本框,都是Qt引擎自己画的,确保了界面在不同操作体系上的一致性。

缺陷:

  • 商业授权不太友好,开发商业运用必定要谨慎。个人开发者可以免费运用。
  • 移动端兼容不太好

计划挑选总结

移动端优先的企业, 短平快运用React Native/小程序这种基于 Web 的计划, 寻求功能的运用Flutter

桌面端优先的企业, 短平快运用QT/Electron, 寻求功能和极致用户体会的运用原生UI+C++