0%

核心点

主要分为3个部分

  • 启动Engine前的准备(Platform端Android)
  • Engine的启动(创建DartVM、相关线程、初始化相关配置)
  • Engine加载Dart产物,直到执行main.dart中的main方法

给官方提交了相关PR给官方,支持engine异步初始化

Engine创建流程不是很合理,底层在做异步任务的时候,主线程会wait阻塞,非常影响体验。

阅读全文 »

概述

方案 性能 动态性 能力集 维护成本
H5
小程序 部分
WEEX/RN 中高 部分
Flutter

其中,前3个基本是面向前端生态的解决方案,而Flutter更像是面向native生态的解决方案。

当然也有基于这几种方案之上,各种各样的魔改方案

阅读全文 »

Weex架构原理

  • JSFRAM 负责和JS框架(VUE/RAX)交互,生成DomTree,将数据传给WeexCore
  • WeexCore 有3部分
    • JSSide: 运行在JS进程中,负责jsbinding、创建、管理js的vm、context
    • CoreSide: 运行在主进程中,负责layout以及将RenderTree以命令形式交给Platform绘制
    • IPC: 跨进程通信
  • Platform(Android/iOS)
    • RenderTree转化为平台对应的ViewTree,进行渲染
    • native能力调用提供
  • JSRuntime: 底层封装JSC/V8接口,WeexCore使用JSRuntimejsengine通信

Weex架构图如下

阅读全文 »

概览

进程通信方式

方式 特点 场景
Socket 2次copy,作为更通用的接口,传输效率低 主要用于不通机器或跨网络的通信
管道 创建时分配一个page大小的内存,缓存区大小比较有限 |grep
信号/信号量 携带信息有限,只是通知其他进程一个信号 锁机制、kill,crash
共享内存 0次copy性能最好,但是需要各个进程自己处理好同步操作 极限性能
消息队列 信息2次cop 不合适频繁或信息量大的通信
Binder 1次copy,C/S架构 专为Android场景设计(性能、安全)

线程同步

|||