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

118 阅读3分钟

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

一、本堂课重点内容:

  • 本堂课的知识要点有哪些?
  1. 跨端是什么,给大家介绍跨端产生的背景及解决的问题
  2. 跨端技术方案介绍,给大家介绍目前主流的跨端技术方案(hybrid 方案/原生渲染方案/自渲染方案/小程序方案)以及对比
  3. 基于小程序跨端实践,带大家了解如何开发一个小程序以及优化小程序
  4. 总结与展望

二、详细知识点介绍:

  • 本堂课介绍了哪些知识点?

跨端是什么?

  • 现在的端有PC端(Windows&Mac)、移动端(Android&iOS)、web端(手机电脑浏览器)、IoT设备(车载设备、手表)等。痛点:功能一致但各端需要单独开发人员、开发、维护成本高、开发周期长、审核发版周期长等。
  • 理想的跨端技术目标:研发效率学习高,成本低且多端一致性高;用户体验好,稳定性高,性能体验好;支持动态化下发,满足增长的业务需求
  • Write once, run everywhere.

常见跨端技术方案

hybrid方案

基于webview渲染,打开url进行渲染,通过js bridge把一部分系统能力开放给js调用。实现前端页面+系统能力的调用

image.png

原生渲染方案

使用js开发,通过中间层桥接后使用原生组件来渲染UI界面。如React Native。区别:webview vs OEM widgets。原生组件渲染效率更高一些,但只能基于有限的原生能力,可能有的css无法实现。

image.png react native的原理:JSI直接操作c++对象,性能优化了。fabric生成一个native方案,turbo modules调用系统API。

image.png

自渲染方案

利用Skia(开源)重新渲染管线,不依赖原生组件。如flutter。

image.png 不依赖系统。有一套自己专属的widget,底层渲染使用自身的高性能c/c++引擎自绘。

flutter架构:一般开发者从framework入手即可。

image.png

小程序方案

小程序DSL+JS开发,通过中间层桥接后调用原生能力,使用webview渲染UI界面。如字节小程序。多webview线程,js运行在独立的环境中,和native对接。

image.png 小程序的时间线:

image.png

image.png

方案对比

对性能没有要求的话,用hybrid,有要求则一般用原生渲染或自渲染。 image.png 三、实践练习例子:

  • 有什么实践举例帮助理解知识点?
  • 小程序跨端实践

开发

性能优化

  • 意义:留住用户、提升转化率、提升用户体验
  • 定义性能指标:loading-FP-LCP,LCP尽可能提前。平台有指标看板。
  • 优化手段: image.png 启动时:合理分包、控制资源大小、优先异步、尽早预取数据或者提前发起关键请求、合理缓存等。

运行时:合理使用setData/自定义组件/监听事件、内存优化及时解绑事件和清理计时器、导航栏匹配等。

四、课后个人总结:

  • 本章有什么知识点不容易掌握?

    跨端的小程序案例后续自己实践。

  • 什么地方容易与其他内容混淆?

    react native和flutter的css方案都是子集。

五、引用参考:

  • 我参考了哪些外部博客/笔记/文章?
  1. 了解一门前端开发框架(React/Vue), reactjs.org/, vuejs.org/
  2. 了解 React Native, reactnative.dev/
  3. 了解 Flutter, flutter.dev/
  4. 了解抖音小程序,developer.open-douyin.com/docs/resour…
  5. 了解前端和客户端通信原理