本文不涉及到任何代码,只讲概念层面的,结合在实际工作过程中的各种体验,对这几种跨平台技术进行一个简单总结。
跨平台技术的由来
传统的纯原生开发已经不能满足日益增长的业务需求。主要表现在如下两个方面:
1)动态化内容需求增大。当需求发生变化时,纯原生应用需要通过版本升级来更新内容,但应用上架、审核是需要周期的,这个周期对高速变化的互联网时代来说是很难接受的,所以,对应用动态化(不发版也可以更新应用内容)的需求就变得迫在眉睫了。
2)业务需求变化快,开发成本变大。由于原生开发一般都要维护 Android、iOS两个开发团队,版本迭代时,无论人力成本还是测试成本都会变大。从这一点上说,跨平台是一个“老板乐”的技术。
总结一下,纯原生开发主要面临动态化和开发成本两个问题,而针对这两个问题,就诞生了一些跨平台的动态化框架。
跨平台技术简介
针对原生开发面临的问题,人们一直都在努力寻找好的解决方案,然而时至今日,已经存在很多跨平台框架(注意,本文中所指的“跨平台”若无特殊说明,即特指 Android和iOS两个平台),根据其原理,主要可分为如下三类。
1) H5(HTML5)+原生( Cordova、 Tonic、微信小程序)。 2) Javascript开发+原生渲染( React Native、Wex、快应用)。 3) 自绘UI+原生( QT Mobile、 Flutter)。
接下来,我们将逐个来了解这三类框架的原理及优缺点。
Hybrid技术简介
H5+原生混合开发
这类框架的主要原理是将APP需要动态变动的一部分内容通过H5来实现,通过原生的网页加载控件 Webview( Android)或 WK Webview(iOS)来加载(以后若无特殊说明,本书将用 Webview来统一指代 Android和iOs中的网页加载控件)。这样,H5部分就可以随时改变而不用发版,动态化需求得到满足;同时,由于H5代码只需要一次开发,就能同时在 Android和OS两个平台上正常运行,这也可以降低开发成本,也就是说,H5部分的功能越多,开发成本就越小。我们称这种H5+原生的开发模式为混合开发,对于采用混合模式开发的APP,我们称之为混合应用或 Hybrid APP,如果一个应用的大多数功能都是采用H5实现的话,我们称其为 Web APP。
目前混合开发框架的典型代表有Cordova、 lonic和微信小程序,值得一提的是,微信小程序目前是在 Webview中渲染的,并非原生渲染,但将来有可能会采用原生渲染。
混合开发技术点
如之前所述,原生开发可以访问平台的所有功能,而在混合开发中,H5代码是运行在WebView中的, Webview实质上就是一个浏览器器内核、其jscript依然运行在一个权限受限的沙箱中,所以对大多数系统能力都没有访向权限:如无法访向文件系统、不能使用蓝牙等,所以,对于H5不能实现的功能,都需要原生来实现。
而混合框架一般都会在原生代码中预先实现一些访问系统能力的API,然后暴露给 Webview以供Javascript调用,这样一来, Webview就成为 Javascript与原生AP之间通信的桥梁,主要负责 Javascript与原生之间调用消息的传递,而消息的传递必须遵守一个标准的协议,其规定了消息的格式与含义,我们将依赖于Webview的、用于在 Javascript与原生之间通信并实现了某种消息传输协议的工具称为 Webview Javascript Bridge,简称 Jsbridge,它也是混合开发框架的核心。
跨平台技术:
- Electron
- React-Native
- Taro
- Cordova
- 快应用
- Flutter
- ...
评论
0