zoukankan      html  css  js  c++  java
  • 小程序学习2

    好多天前

    • 介绍了一下小程序
    • 如何注册小程序账号
    • 开发工具基本使用
    • 小程序项目目录结构
    • 小程序初体验
    • 小程序配置
    • wx92167dc7ea03b186

    project.config.json : 项目配置文件,如项目名称、appid 等
    sitemap.json: 小程序搜索相关

    app.json:全局配置
    page.json: 页面配置

    全局配置中比较重要的内容

    属性 类型 描述
    pages string[] 小程序页面路径列表
    window object 全局的默认窗口表现
    tabBar object 底部tab栏的表现

    双线程模型

    • 小程序的宿主环境?
    • 宿主环境为了执行小程序的各种文件: wxml,wxss,js(json文件只是配置,直接解析)
    • 提供了小程序的双线程模型

    • wxml 和 wxss 运行与渲染层, 渲染层使用 webview线程渲染(小程序有多个页面,会使用多个webView 的线程,小程序页面栈)
    • js 脚本 (app.js/home.js等) 运行与逻辑层, 逻辑层使用JsCore 运行脚本。
    • 这两个线程都会经由微信客户端(Native) 进行中转交互。

    界面渲染过程

    • wxml和DOM树
    • wxml 可以等价于一颗 DOM 树, 也可以使用一个JS 对象来模拟 (虚拟DOM)

    实际开发中 wxml 的数据大都是 由 js 的data 提供的,这时 只有一个 线程 无法完成 最终的渲染
    因此 是 渲染层 和 逻辑层 互相配合 渲染出 js 对象 再将 对象转化为真实DOM

    image.png

    • 初始化渲染

    wxml 和 wxss 通过渲染层线程的 处理, 转成 JS 对象

    image.png

    • 数据发生变化

    通过setData 把msg 数据从 “hello World” 变成 "Goodbye"

    1. 产生的 JS对象 对应的节点就会发生变化
    2. 此时可以 对比前后两个JS对象得到变得部分
    3. 然后把这个差异应用到原来的Dom 树上
    4. 从而达到更新UI 的目的,这就是数据驱动的原理

    • 界面渲染的整体流程
    1. 在渲染层,宿主环境会把 WXML 转化成对应的JS对象
    2. 将JS对象再次转化成真实DOM 树,交由渲染层线程渲染
    3. 数据变化时,逻辑层提供最新的变化数据,JS对象发生变化比较进行diff 算法对比
    4. 将最新变化的内容反映到真实的DOM 树中, 更新UI

    小程序启动流程

    • 通过了解小程序的启动流程,我们就知道了自己代码的执行顺序

    注册小程序-参数解析

  • 相关阅读:
    本地项目上传至GitHub
    博客园上传markdown格式文章
    Spring boot快速入门
    洛谷P1279 字串距离
    洛谷P2758 编辑距离
    POJ 堆栈基本操作
    洛谷P2815 IPv6地址压缩
    喵的Unity游戏开发之路
    喵的Unity游戏开发之路
    喵的Unity游戏开发之路
  • 原文地址:https://www.cnblogs.com/duoban/p/13922832.html
Copyright © 2011-2022 走看看