ChelesteWang / FE-Review

前端知识复盘与整理
Apache License 2.0
31 stars 8 forks source link

跨端方案 #58

Open ChelesteWang opened 2 years ago

ChelesteWang commented 2 years ago

多端融合的意义
发挥各自的技术优势,实现性能及体验上的突破
比如性能优化,单纯的 web 能做的就那些事情,非常依赖浏览器本身的性能,但是结合原生,就可以从并行、预加载、缓存三个方面做更极致的优化

Flutter

cross platform first 框架
Flutter架构最核心的便是 Framework(框架)和 Engine(引擎)

渲染原理

开发者通过 widget 写 ui,dart framework 通过比对 widget 更新 element,最后调度 RenderObject Tree完成布局排列和绘制

skia

Platform Channels

提供让 dart 可以调用 native 功能的能力

跨平台原理

NDK

提供了一系列的工具,帮助开发者快速开发 C(或C++)的动态库,并能自动将 so 和 java 应用一起打包成apk

Kotlin

基于 Kotlin Multiplatform 提供跨平台能力

优势


跨终端架构

四种模式:webapp、hybrid(ionic)、调用原生(rn、weex)、完全接管(flutter)

js-bridge

给 h5 提供调用原生的能力,有 schema 和注入两种实现方式,现在一般都使用注入的方式
技术点有数据的序列化与反序列化、回调函数全局挂载

方案一

方案二

提供全新的 dsl 框架,编译成小程序的 dsl,针对不同端提供不同的运行时组件,完全适配

mpvue

主要的技术点:wxml 模板生成、生命周期同步、事件代理、setData 性能

- 屏蔽 vue 对 dom 的处理,数据变化时通过 update 生命周期执行小程序的 setData
- vue 组件和小程序组件之间通过 id 建立关联(小程序元素和 vnode 保存相同的 id)
- 事件触发时通过 id 找到 vdom,然后拿到 event handler 执行

taro

// render 编成 wxml,剩下的作为 js 重新定义
组件都继承 BaseComponent 适配 react 的生命周期
createComponent 与小程序打通

remax

chameleon

多态协议框架,可以将框架 dsl 编成各端的 dsl,每个端都有一个运行时提供通用方法和组件

小程序性能

建议按照 wx 官方标准 [性能 | 微信开放文档](https://developers.weixin.qq.com/miniprogram/dev/framework/audits/performance.html)

自定义标准

优化方式

思路就是小程序文档 + web 优化方法论结合

react native 新架构


flutter 跨终端生态