一、框架:
- 功能模块:包管理系统、运营监控系统、业务埋点系统、终端sdk(引擎管理、容器管理)
- 生态工具建设:调试工具、构建工具、生态构建、业务接入(官网、文档、playground)
- 核心模块:分层设计,分为5层,从上往下依次是
- DSL层主要还是对react/VUE/native js做了一些简单封装
- JSFramework层,包含核心库(VUE/REACT)、浏览器模拟(VUE)、UIMangaer(控制view创建和生命周期管理)/event、modules(桥的注册销毁等、native bridge的一些生命周期管理)
- 引擎层:js引擎,处理js脚本的虚拟机,是动态化的前提和基础,开发者可通过js引擎在客户端应用中运行js代码。主要使用JSCore(ios)和V8引擎(安卓)
- 渲染层:通过yoga排版,上屏渲染,生成最终的view
- 终端:安卓、ios
- TK 和 KRN区别:JS线程(运行UI代码)、shadow线程(布局排版)、UI线程(上屏渲染)协作,复杂场景实现比较好的性能;(TK,仅UI线程,减少线程切换,达到高效的渲染,应用于挂件、弹窗类,复杂场景无法支撑,复杂场景如果在UI上,会出现block,比如渲染变慢)
- 跨端原理:
- RN使用js作为主要变成语言,js代码运行在一个独立的js引擎中
- 通过bridge将js和RN代码链接,bridge会在js和原生代码之间传递消息(异步通信、事件系统,如触摸事件、网络请求等)和数据
- Native modules,原生模块用原生代码编写组件,他们提供了访问硬件设备和操作系统功能的能力,RN提供了一套API,允许开发者编写自定义的原生模块,并通过bridge在js中调用
- Native Components,RN将原生组件封装成React组件,开发者可以用JSX语法来创建和操作这些组件,每个原生组件都对应了一个原生视图,这些视图由原生代码负责渲染和管