跨端技术概述 | 青训营笔记

95 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第15天

前言

随着业务的发展,产生了越来越多的业务场景,同时随着技术的发展,产生了越来越多的端,PC端(Windows、Mac) ,移动端 (安卓、iOS) 、web端、loT 设备 (车载设备、手表) 等。各端功能几乎一致仍需要单独配置研发人员、开发维护成本高等原因,导致开发者们不得不考虑新的跨端技术方案。

跨端技术方案介绍

跨端技术方案目标:

  1. 研发效率高:1.学习成本低 2.多端一致性高
  2. 用户体验好:1.稳定性高 2.性能体验好
  3. 动态化:支持动态化下发,满足日益增长的业务需求

Hybrid方案

定义

hybrid即“混合”,即前端和客户端的混合开发

优点

  • 可以快速迭代更新,无需app审核,(需审核因为客户端代码会有访问手机隐私的信息,比如地理位置,开启相机等)
  • 体验流畅(和Native的体验基本类似)
  • 减少开发和沟通成本,双端共用一套代码

Webview

  • webview是app中的一个组件(app可以有webview,也可以没有),用于加载h5页面,即一个小型的浏览器内核。
  • 基于 WebView 渲染,通过 JS Bridge 把一部分系统能力开放给 JS 调用

图解

image.png 其实,浏览器本就是一个跨端实现方案,因为你只需要输入网址,就能在任何端的浏览器上打开你的网页。那么,如果我们把浏览器嵌入 app 中,再将地址栏等内容隐藏掉,是不是就能将我们的网页嵌入原生 app 了。而这个嵌入 app 的浏览器,我们把它称之为 webview ,所以只要某个端支持 webview ,那么它就能使用这种方案跨端。

原生渲染方案

思路:使用 JS 开发,通过中间层桥接后使用原生组件来渲染 UI 界面

React Native

React Native 是一个由 Facebook 于 2015 年9 月发布的一款开源的 JavaScript 框架,它可以让开发者使用 JavaScript 和 React 来开发跨平台的移动应用。

图解

image.png React Native 的思路是最大化地复用需的生态 Native 的生态, WeoView 容器的最大区别在于 View 的染系,Rect Native 抛弃了低政的浏览器内核信染,转而使用自己的 DSL 生成中间格式,然后映射到对应的平台,染成平台的组件,相对 Webiew 容器,体验会有一定的提升。
不过,染时需要 JavaSoript 和原生之间通信,在有些场景可能会导致卡顿。另外就是,渲染还是在 Native层,要求开发人员对Native有一定的熟悉度。
而不同于一般 react 应用,它需要借助原生的能力来进行渲染,组件最终都会被渲染为原生组件,这可以给用户带来比较好的体验。

自渲染方案-Flutter

Flutter 是 Google 在 2018 年世界移动大会公布的开源应用开发框架,仅通过-套代码库,就能构建精美的、原生平台编译的多平台应用。 image.png

小程序方案

使用小程序 DSL + JS 开发,通过中间层桥接后调用原生能力,使用webview 来渲染 UI 面。
众所周知,在最近几年有一个东西变得非常火爆:小程序,现在许多大厂都开始入局小程序,不过现在小程序技术也不再是BAT的专属,市面上早已经推出小程序容器技术解决方案,当集成了小程序容器 SDK 之后,不论是 iPhone, Android, Flutter,React Native, 电脑、电视、车载或物联网设备,都能够让不同的应用或终端设备快速具备运行小程序的能力,而且同一个小程序场景可以分发到不同终端中运行,不需要针对不同终端编写不同代码。 image.png

跨端技术方案对比

image.png