• 微信小程序快速入门【四】


    微信小程序快速入门【四】


    在这里插入图片描述


    在这里插入图片描述


    👨‍🏫内容1:宿主环境


    不同于Android应用和iOS应用直接运行于Andorid系统和iOS系统,微信小程序运行在微信提供的宿主环境中,由于微信已经替我们抹平了不同平台的差异,所以微信小程序能够实现跨平台,且能够实现很多普通网页无法实现的功能。我们将以之前建立的Test项目为例介绍一下微信小程序的运作过程。

    我们来简单了解下小程序的运行环境。小程序的运行环境分成渲染层和逻辑层,其中 WXML 模板和 WXSS 样式工作在渲染层,JS 脚本工作在逻辑层。小程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView 进行渲染;逻辑层采用JsCore线程运行JS脚本。一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端(下文中也会采用Native来代指微信客户端)做中转,逻辑层发送网络请求也经由Native转发,小程序的通信模型下图所示⬇️

    在这里插入图片描述

    🌸🌸🌸🌷🌷🌷💐💐💐🌷🌷🌷🌸🌸🌸

    👨‍⚖️内容2:小程序的启动过程


    微信客户端在打开小程序之前,会把整个小程序的代码包下载到本地。紧接着通过 app.json 的 pages 字段就可以知道你当前小程序的所有页面路径,我们新建的test项目的pages字段内容如下,可以知道test项目包含两个页面index和logs,由于没有通过entryPagePath指定启动页,所以会默认pages字段的第一个页面也就是index页面为启动页。

    "pages":[
       "pages/index/index",
       "pages/logs/logs"
     ]
    
    • 1
    • 2
    • 3
    • 4

    于是微信客户端就把首页的代码装载进来,通过小程序底层的一些机制,就可以渲染出这个首页。小程序启动之后,在 app.js 定义的App实例的onLaunch回调会被执行,整个小程序只有一个 App 实例,是全部页面共享的,每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数、错误监听和页面不存在监听函数等,其包含的监听函数如下:

    // app.js
    App({
     onLaunch (options) {
       // 生命周期回调——监听小程序初始化。
     },
     onShow (options) {
       // 生命周期回调——监听小程序启动或切前台。
     },
     onHide () {
       // 生命周期回调——监听小程序切后台。
     },
     onError (msg) {
     //错误监听函数。
       console.log(msg)
     },
     globalData: 'I am global data'
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    🌻🌻🌻🌼🌼🌼🌺🌺🌺🌼🌼🌼🌻🌻🌻

    👨‍💻内容3:小程序页面渲染


    其大致的过程如下,可以观察到 pages/logs/logs 下其实是包括了4种文件的,微信客户端会先根据logs.json配置生成一个界面,顶部的颜色和文字你都可以在这个json文件里边定义好。紧接着客户端就会装载这个页面的 WXML 结构和 WXSS 样式。最后客户端会装载 log.js。

    Page({
      data: {  //参与页面渲染的数据
        logs: []
      },
      onLoad() {
      //页面渲染后执行
        this.setData({
          logs: (wx.getStorageSync('logs') || []).map(log => {
            return {
              date: util.formatTime(new Date(log)),
              timeStamp: log
            }
          })
        })
      }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    Page 是一个页面构造器,这个构造器就生成了一个页面。在生成页面的时候,小程序框架会把 data 数据和 index.wxml 一起渲染出最终的结构,于是就得到了你看到的小程序的样子。在渲染完界面之后,页面实例就会收到一个 onLoad 的回调,你可以在这个回调处理你的逻辑。
    对于小程序中的每个页面,都需要在页面对应的 js 文件中进行注册,指定页面的初始数据、生命周期回调、事件处理函数等。

    //index.js
    Page({
     data: {
       text: "This is page data."
     },
     onLoad: function(options) {
       // 页面创建时执行
     },
     onShow: function() {
       // 页面出现在前台时执行
     },
     onReady: function() {
       // 页面首次渲染完毕时执行
     },
     onHide: function() {
       // 页面从前台变为后台时执行
     },
     onUnload: function() {
       // 页面销毁时执行
     },
     onPullDownRefresh: function() {
       // 触发下拉刷新时执行
     },
     onReachBottom: function() {
       // 页面触底时执行
     },
     onShareAppMessage: function () {
       // 页面被用户分享时执行
     },
     onPageScroll: function() {
       // 页面滚动时执行
     },
     onResize: function() {
       // 页面尺寸变化时执行
     },
     onTabItemTap(item) {
       // tab 点击时执行
       console.log(item.index)
       console.log(item.pagePath)
       console.log(item.text)
     }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    🐾🐾🐾🐾🐾🐾🐾🐾🐾🐾🐾🐾

    👨‍🚀内容4:Component


    👉Page 构造器适用于简单的页面。但对于复杂的页面, Page 构造器可能并不好用。此时,可以使用 Component 构造器来构造页面。 Component 构造器的主要区别是:方法需要放在 methods: { } 里面。

    Component({
     data: {
       text: "This is page data."
     },
     methods: {
       onLoad: function(options) {
         // 页面创建时执行
       },
       onPullDownRefresh: function() {
         // 下拉刷新时执行
       },
       // 事件响应函数
       viewTap: function() {
         // ...
       }
     }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    🔮🔮🔮🔮🔮🔮🔮🔮🔮🔮🔮🔮

    🧑‍🌾内容5:Behavior


    👉页面可以引用 behaviors 。behaviors 可以用来让多个页面有相同的数据字段和方法。

    // my-behavior.js
    module.exports = Behavior({
     data: {
       sharedText: 'This is a piece of data shared between pages.'
     },
     methods: {
       sharedMethod: function() {
         this.data.sharedText === 'This is a piece of data shared between pages.'
       }
     }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    // page-a.js
    var myBehavior = require('./my-behavior.js')
    Page({
     behaviors: [myBehavior],
     onLoad: function() {
       this.data.sharedText === 'This is a piece of data shared between pages.'
     }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    🔮🔮🔮🔮🔮🔮🔮🔮🔮🔮🔮🔮

    🍉精品图书推荐


    在这里插入图片描述

    🎃活动介绍:
    👉清华社【秋日阅读企划】领券立享优惠
    IT好书 5折叠加10元 无门槛优惠券:https://u.jd.com/Yqsd9wj
    活动时间:9月4日-9月17日,先到先得,快快来抢

    在这里插入图片描述

    🍟内容介绍:
    本书共分为三部分,分别介绍了JavaScript、HTML和CSS的基础知识,JavaScript编程的基本概念和技巧,以及如何用JavaScript开发实用的应用程序。本书风格独特,采用三段式学练结合的知识架构,从JavaScript编程知识的讲解,到示范教学和引导学生参与动手实践,循序渐进地帮助读者保持学习动机和兴趣,掌握JavaScript编程技能。同时本书提供了137个JavaScript代码范例,可以直接通过浏览器进行交互,以及多个实作项目,包括煮蛋计时器、计算器、温度转换器、通讯录以及适用于时装店和冰淇淋连锁店的商业应用。本书还介绍了目前流行的jQuery、Vue和ES6等相关技术。如果你想轻松学会JavaScript,并且享受编程的乐趣,那么这本书就是你的不二之选!

  • 相关阅读:
    Content-Security-Policy(CSP)的内容构成。
    磁盘的结构
    Scanner类中nextInt()和nextLine()一起使用时出现的问题
    git基础
    TFN FMT715C/ 760 C系列无线综合测试仪性能如何
    回溯算法4.1-4.4
    java数据结构与算法刷题-----LeetCode1854:人口最多的年份
    Linux下yum源配置实战 2
    Allegro如何导出带有钻孔数据的dxf文件?
    计算当月工作日时间进度
  • 原文地址:https://blog.csdn.net/ws15168689087/article/details/132869835