Upgrade to Pro — share decks privately, control downloads, hide ads and more …

小程序终端技术架构

 小程序终端技术架构

yiminghe

March 30, 2019
Tweet

More Decks by yiminghe

Other Decks in Programming

Transcript

  1.   JSCore 保活 机制 离线包 形式 精简 运行环境 扩展性

    引入JSCore:小程序会创 建一个JSCore ,专门负 责逻辑处理,绑定所有页 面,页面只负责渲染,尽 可能提升每个页面的渲染 性能。 引入保活机制:当离开当 前小程序时,小程序会在 后台继续运行5分钟,再 次点击直接秒开。 小程序框架以离线包形式 在整个客户端层面统一管 理和更新,并且框架代码 会被UC内核统一缓存为 字节码,所有小程序业务 公用,减少业务包大小。 基础组件,统一api调用 方式,对于纯H5性能较 差的部分提供native实现 以提升性能(map、 input)。 npm第三方模块,自定义 组件,web-view。 3 5 体验差异小 4 5 6 7 小程序整体效果好,H5对开发者要求 高,产出结果体验差异较大 webview 渲染优化 同容器/内核结合优化框架渲染。 1 2
  2.  App({ onLaunch() {}, onShow() {}, }) Page({ onLoad() {},

    onUnload() {}, }) view {color: red} <view><C /></view> Component({ didMount() {}, didUnmount() {}, }) <view><C2 /></view> .c {color: green}
  3.   JSCore Native App java/ios Page A webview Preloaded

    webview JSON bridge JSON bridge framework worker.bundle framework render.bundle framework render.bundle
  4.  JSCore webview Page a js Page a css/template Page

    b js webview Page b css/template native render data ui event render data ui event api system event
  5. page data/component data 为 json 格式 Ø 不能有复杂对象,例如 new Date()

    Ø 不能有循环引用,直接传输出错 Ø 不要直接修改 this.data, 使用 setData/$spliceData 异步渲染/事件 Ø setData:使用回调函数依赖渲染结果, setData(data, callback) Ø 只能静态阻止冒泡:catchTap 
  6.  Native JSCore webview launch onLaunch page onLoad->onShow User Event

    render onReady handler re-render send data navigateTo onHide onShow webview init data
  7.  0 50 100 150 200 250 300 350 50

    90 130 170 210 250 290 330 370 410 小程序中渲染耗时随DOM节点数的变化曲线 小程序中渲染耗时随DOM节点数的变化曲线
  8.  0 50 100 150 200 250 300 1kB 2kB

    25kB 50kB 75kB 150kB 300kB 500kB 1000kB 2000kB 数据传输耗时 (ms) 数据传输耗时 (ms)