跨端容器简介 | 青训营笔记

149 阅读2分钟

跨端容器简介

⭐什么是跨端?

让代码可以跨客户端运行,WEB、Android、IOS,大有write once, run everywhere之势!

⭐为什么需要跨端

🌰一套代码多处运行,成本大大降低,开发效率upup↑

🌰一套开发流程,体验一致性也得到了保证。

🌰前端开发生态完善,人数众多,向其他方向进行扩展(抢饭碗bushi)

⭐跨端容器简介

🌰WebView

WebView,即网页视图,用于加载网页URL,并展示其内容的空间。它可以内嵌在移动端APP中,实现前端混合开发,大多数混合框架都是基于Webview的二次开发,例如lonic、Cordova等等。

常用WebView分类

常用webview、Android、iOS、国产Android

webview.png

WebView的优势

  1. 一次开发,处处使用,学习成本较低
  2. 随时发布,即时更新,不用下载安装包
  3. 移动设备性能不断提升,性能有保障
  4. 通过JSBridge和原生系统交互,可以实现复杂功能

WebView使用原生能力

JavaScript调用Native

  • API注入:Native获取JavaScript环境上下文,对其挂载的对象或者方法进行拦截
  • 使用WebView URL Scheme跳转拦截
  • IOS上window.webkit.meesageHandler直接通信

Native调用JavaScript

  • 直接通过webview暴露的API执行JS代码
  • 在IOS中: webview.stringByEvaluatingJavaScriptFromString
  • 在Android中: webview.evaluateJavascript

WebView<->Native通信

  1. JS环境中提供了通信的JSBridge
  2. Native端提供了SDK响应JSBridge发出的调用
  3. 前端和客户端分别实现对应的功能模块

webview2native.png

🌰小程序

小程序有微信、支付宝、百度小程序、小米直达号等等

他的主要架构:

appletFrame.png

  • 渲染层——webview
  • 双线程——多webview架构
  • 数据通信——可以观察出逻辑层和渲染层做了分离,所以需要通过Native进行转发

🌰React Native/Weex

ReactNativeOrWeeX.png

  1. 原生组件渲染
  2. React/Vue框架
  3. virtual dom
  4. JSBridge

🌰Lynx

Lynx.png

  1. Vue
  2. JS Core / V8
  3. JSBinding
  4. Native UI / Skia

🌰Flutter

Flutter.png

  1. wideget
  2. dark vm
  3. skia图形库绘画,所以在各端看起来是一致的

⭐总结

总结以上,我们可以发现跨端容器的通用原理:

generalPrincipal.png

  1. 提供一套基础的UI组件
  2. 提供一个渲染引擎
  3. 提供一个逻辑控制引擎
  4. 来一个通信桥梁bridge
  5. 最后再实现各端API,抹平各端的表现差异

最后对比各技术:

cross-endContract.png