跨端技术学习笔记 | 青训营

111 阅读3分钟

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


随着技术的发展,产生了越来越多的端,PC端(Windows、Mac),移动端(安卓、iOS)、web端、IoT设备(车载设备、手表)等。这些设备正在我们的日常生活中发挥作用。

同时,为了在各个端都能使用同一产品,各个端需要单独配置开发人员,开发和维护的成本较高,一些端如安卓、ios的发版周期长等等这些因素,促使了跨端技术的发展。

开端技术方案目标

  • 研发效率高,学习成本低,多端一致性高

  • 用户体验好,稳定性高,性能好

  • 动态化,支持动态下发,满足日益增长的业务需求

方案介绍

Hybrid

基于WebView渲染,通过Js Bridge把一部分系统能力开发给JS调用

简单理解就像是一个浏览器,无论什么端,只要有浏览器,就能够通过url打开一个web页面。同时也能够通过使用JS Bridge将一部分系统功能如相机开放给JS调用。

优点:开发成本低,CSS适配性好,一致性好
缺点:性能中等

原生渲染

使用JS开发,通过中间层桥接后使用原生组件进行UI渲染。

跨平台框架React Native

React Native是一款开源的JavaScript框架,开发者使用JavaScript和React来开发跨平台的移动应用。

原生组件渲染速度快于WebView。

React Nactive 使用OEM widgets进行渲染。Hybrid 使用 WebView进行渲染。
OEM widgets 只能使用有限的资源,如样式。

优点:性能好
缺点:CSS子集,一致性一般

自渲染

利用Skia重新实现渲染管线,不依赖原生组件

Skia是开源的渲染引擎,安卓和ios都是基于Skia,不使用原生的渲染引擎,直接使用Skia的渲染方式。

Flutter

Flutter是开源应用开发框架,仅通过一套代码库,就能构建精美的、原生平台编译的多平台应用。

优点:性能最佳,一致性好
缺点:CSS子集,Dart生态一般,开发成本高

小程序

使用小程序DSL+JS开发,通过中间层桥接后调用原生能力,使用webview来渲染UI界面

字节小程序

字节小程序是一种全新的连接用户与服务的方式,它可以在宿主(抖音、头条等App)内被便捷地获取和传播,同时具有出色的使用体验。与大多数小程序类似。

使用JS Engine

优点:开发成本低,CSS适配性好,一致性好

小程序性能优化

性能优化的意义

留住用户,提升转化率,提升用户体验

Loading ----->FP----->LCP

Loading是加载状态,FP是有一点相关内容的状态,LCP是加载结束状态。

优化的目的是让LCP尽可能的提前完成。

字节小程序提供了平台指标看板,包括错误日志,性能体验,自定义分析。
性能体验中包含,加载耗时,取消率,重启率,卡死次数百分比,LCP到达率,白屏率,JS影响用户率。

通过这些指标,能够给开发者看到什么部分需要优化,更好的提升开发和维护效率。

image.png

结尾

本文作为本节课跨端方案的记录,本节课着重介绍了几种跨端方案,以及字节小程序如何进行开发和调试。对于我来说即使不是走小程序或者安卓应用方向,本节课给出的性能优化也能给前端方向优化进行一些参考。所以并非是毫无收获。

引用参考:

「跨端技术概述」第五届字节跳动青训营 - 前端专场 (juejin.cn)