本节课程内容会分为以下几个方面:
使得一套代码可以适配目前越来越多的业务场景,比如:PC(window、mac),移动端(安卓、IOS),web,IOT设备(车载设备、手表),要实现的目标是:
研发效率高——学习成本低、多端一致
用户体验好——稳定性好,性能体验好
动态化——支持动态下发,满足日益增长的业务需求
基于 webview 渲染界面,通过 JS bridge 把一部分功能系统开放给 JS 调用:
通过 js 开发,通过中间层桥接之后使用原生组件来渲染我们的 UI,最著名: React Native
利用 skia 重新实现渲染管线,不依赖原生组件,因为安卓 ios 底层也使用类似的引擎来进行渲染,所以我也使用它来进行渲染,最著名的是:Flutter
使用 DSL + JS 来开发,通过中间层桥接后调用原生能力,使用 webview 来渲染UI,它能写的代码也是有限的
他们的对比如下:
要开发字节小程序需要先下载字节小程序的开发工具,可以点这个链接了解:
小程序开发文档:https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/guide/introduction/
小程序开发者工具:https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/developer-instrument/download/developer-instrument-update-and-download
PS以下来自作者:有一说一直播网炸了所以没讲太多,想要了解的可以自己去看,目前主流的还是对手公司的微信小程序,字节小程序用的属实不多哦,需要用的也可以用 uniapp(vue 友好) 直接转基本上现在所有平台的小程序和快应用
这里补充一份小程序的原理(来自字节秋招二面真实面试题):
小程序的运行原理是什么?
重点:小程序的逻辑层和渲染层是分开的,是双线程的运行模式
渲染层,又叫视图层主要负责小程序的UI渲染,也就是展示给用户的部分,界面渲染相关的任务全都在 WebView 里执行,如果一个小程序存在多个界面,就存在多个 WebView 线程。因为小程序的视图和逻辑是分离的,所以不能在小程序 js 逻辑里操作 DOM 等元素,所以例如 Jquery 之类的框架不能在小程序里使用
逻辑层,主要负责逻辑处理、数据请求、接口调用等内容,它采用 JsCore 线程运行相关的 js,因为 JsCore 不是node 环境,所以部分的包在小程序里不能运行
系统层是负责和两个线程通信,并且和原生平台对接的,它可以调用一些平台提供给用户的能力,也可以帮助用户完成一些需要操作系统完成的内容,比如调用相机等等
视图层和逻辑层通过系统的 JSBridage 进行通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理。具体流程就是:
使用双线程模型的原因:
优化的意义:
小程序的加载:
loading 界面(加载底层的框架)> FP白屏幕(加载你的页面)> 出现UI但是不能操作 > LCP用户可以操作,我们的目标就是 LCP 尽量提前。
小程序提供了很多指标,加载耗时,白屏占比,重启率,卡死率等等可以查看,针对优化,以下是一些常见的方案:
除此之外还可以使用 性能分析工具和性能评分工具 来进行分析