• 开发教程与代码示例
  • 入门
  • 小程序运行流程
  • 开发 Todo List 小程序
  • 小程序框架
  • 小程序运行时
  • 自定义组件
  • 基础教程
  • 能力教程
  • 性能优化
  • 安全
  • 小程序运行流程

    收藏
    我的收藏

    小程序启动与运行

    宿主 App 会为小程序展示一个固定的启动界面(包含小程序的图标、名称和加载提示图标)。
    此时宿主 App 会在背后依次完成:下载小程序代码包 -> 加载小程序代码包 -> 初始化小程序首页。

    用户点击打开小程序时

    宿主 App 会判断本地是否有缓存的小程序代码包。
      本地没有缓存的小程序代码包:下载小程序代码包 -> 加载小程序代码包。
      本地有缓存的小程序代码包:直接加载小程序代码包。

    小程序初始化

    初始化小程序分为逻辑线程视图线程两个线程的初始化,在小程序包准备好之后,两个线程会并行工作。
      逻辑线程:运行逻辑层代码,也就是 js 代码。
      视图线程:用于展示页面,也就是 ttml 代码对应的页面结构。

    视图层加载流程

      1.加载基础库(基础库会提供小程序视图层的运行环境,比如 view、text 等各种内置组件)。
      2.加载 App.ttss 的编译产物。
      3.加载入口页面对应的 sjs / ttml / ttss 的编译产物。
      4.加载完毕后,等待逻辑层的 init data。

    逻辑层加载流程

      1.加载基础库(基础库会提供小程序运行时所需要的基础环境,比如 App、Page 等方法和 tt.getStorage 等 API)。
      2.创建 App。
      a.加载开发者的 App.js,创建 App 实例。
      b.依次触发 App.onLaunch 和 App.onShow 两个生命周期。

    创建 Page

      1.逻辑层加载开发者的 page.js,创建 Page 实例,将 init data 发送至视图层。
      2.视图层收到 init data 后,开始渲染。
      3.与此同时逻辑层依次执行 Page 的 onLoad 和 onShow 两个生命周期。
      4.视图层渲染完毕后会通知逻辑层,逻辑层收到通知,触发 onReady 生命周期。
      5.页面完成初次渲染,得到 FP。

    setData 运行原理

    通常开发者会在 onload 中动态获取数据,比如通过 tt.request ,或者 tt.getStorage 等,然后再 setData。
      1.逻辑层会发送经过 diff 后的 data 到视图层.
      2.视图层收到 data 之后会触发页面的重新渲染,得到 FMP.
      3.渲染完毕后会通知逻辑层页面渲染完成.
      4.逻辑层收到通知后会触发 setData callback.
    开发者可以通过 setData 触发页面的更新,更新流程和 onload 中的 setData 流程类似。

    总结

    介绍完小程序启动时和运行时的流程,你可以围绕小程序的启动流程和运行流程进行相对应优化。