微信小程序开发之入门级02(带你进一步了解微信小程序开发)

简介: 微信小程序开发之入门级02(带你进一步了解微信小程序开发)



前言

      在上一期的博客中我们已经初步的与大家共同去了解了有关微信小程序的一些基本的知识,今天我们来继续探寻有关微信小程序的知识。

一、 微信小程序的生命周期

1. 概述

      微信小程序的生命周期分为一下几个阶段:

  1. 启动阶段(onLaunch):当用户打开小程序时,会触发启动事件,此时可以进行一些初始化操作,比如获取用户信息、获取系统信息等。
  2. 显示阶段(onShow):当小程序启动后或从后台切换到前台时,会触发显示事件,此时小程序界面会展示给用户。在这个阶段,可以进行一些数据的刷新、页面的渲染等操作。
  3. 隐藏阶段(onHide):当小程序从前台切换到后台时,会触发隐藏事件,此时小程序界面对用户不可见。在这个阶段,可以进行一些清理工作、保存用户数据等。
  4. 销毁阶段(onUnload):当小程序被关闭时,会触发销毁事件,此时可以进行一些资源释放、清理工作等。

       除此之外,小程序还可以通过监听页面的其他事件来实现不同的功能,比如页面加载事件(onLoad)、页面显示事件(onShow)、页面隐藏事件(onHide)、页面卸载事件(onUnload)等。可以根据具体需求来使用相应的生命周期函数来控制小程序的行为。

2. 全局与页面的生命周期函数

2.1 全局的生命周期函数:

App(全局)生命周期函数:

  • onLaunch:小程序启动时触发,可以进行一些初始化操作。
  • onShow:小程序显示时触发,可以进行页面数据刷新、音视频播放等操作。
  • onHide:小程序隐藏时触发,可以进行数据保存、清理缓存等操作。

2.2 页面的生命周期函数:

Page(页面)生命周期函数:

  • onLoad:页面加载时触发,可以进行页面数据初始化等操作。
  • onShow:页面显示时触发,可以进行数据刷新、动画效果等操作。
  • onHide:页面隐藏时触发,可以进行数据保存、动画停止等操作。
  • onUnload:页面卸载时触发,可以进行资源释放、清理操作等。

3. 常用的生命周期函数和对应的应用场景

3.1 onLaunch(小程序启动)

  • 可用于进行全局的初始化操作,如获取系统信息、登录态验证等。

3.2 onShow(小程序显示):

  • 可用于进行页面数据的刷新和更新,如显示最新的数据、重新加载广告等。
  • 可用于进行用户行为分析,如统计用户进入小程序的次数、记录用户行为等。
  • 可用于处理一些特定场景下的逻辑,如在小程序退回前台时重新播放音频。

3.3 onHide(小程序隐藏):

  • 可用于进行数据的保存和清理,如保存用户编辑的内容、清理临时数据等。
  • 可用于停止一些无必要的后台操作,如停止音频播放、暂停视频播放等。

3.4 onUnload(小程序卸载):

  • 可用于进行一些资源的释放和清理,如关闭定时器、断开网络连接等。
  • 可用于保存必要的数据和状态,以供下次使用,如保存用户的登录信息、设置选项等。

注意事项:

      小程序的生命周期函数触发时机可能会受到一些特殊情况的影响,比如系统资源紧张、网络异常等。因此,在编写代码时,应考虑到这些情况,保证代码的健壮性和可靠性。

4. 扩展:额外的生命周期函数和对应的应用场景

4.1 onReady:

       页面初次渲染完成时触发,表示页面已经准备好可以和用户进行交互了。可以在这个函数中进行一些需要页面渲染完成后才可执行的操作,比如获取页面 DOM 节点、初始化动画效果等。

4.2 onPullDownRefresh:

用户下拉刷新时触发,可以在这个函数中执行与下拉刷新相关的操作,如重新加载数据、清空缓存等。注意,在 onPullDownRefresh 函数中需要手动调用 wx.stopPullDownRefresh() 方法来告诉小程序刷新完成。

4.3 onReachBottom:

页面滚动到底部时触发,可以在这个函数中执行与加载更多数据相关的操作,比如分页加载、无限滚动等。

4.4 onShareAppMessage:

用户点击右上角分享按钮或调用小程序内置分享组件时触发,可以在这个函数中配置分享的标题、图片、路径等信息,并返回给小程序的用户。可以用于增加小程序的传播范围和用户量。

4.5 onTabItemTap:

用户点击底部 TabBar 时触发,可以在这个函数中执行与底部导航相关的操作,比如切换页面、更新数据等。

二、视图层与逻辑层

视图层

1. 概念

       视图层负责处理小程序的UI界面展示,包括各种页面、组件和样式等。开发者可以使用WXML (WeiXin Markup Language) 和 WXSS (WeiXin Style Sheets) 来描述视图层的结构和样式。视图层可以响应用户的交互事件,比如点击、滑动等,将用户的操作反馈到逻辑层处理。

       逻辑层负责处理小程序的业务逻辑,包括网络请求、数据处理、事件处理等。开发者可以使用JavaScript来编写逻辑层的代码,并通过API接口来访问微信提供的各种能力,比如获取用户信息、调用系统功能等。逻辑层可以通过数据绑定将数据更新到视图层,也可以监听视图层的事件来进行相应的处理。

       视图层和逻辑层在小程序运行时是分离的,分别运行在不同的线程中,通过微信小程序的运行时框架进行通信和交互。这种架构可以实现页面的快速渲染和流畅的交互体验,提高小程序的性能和用户体验。

2. 视图层演示案例(WXML)

框架的视图层由 WXML 与 WXSS 编写,由组件来进行展示。

将逻辑层的数据反映成视图,同时将视图层的事件发送给逻辑层。

WXML(WeiXin Markup language) 用于描述页面的结构。

WXS(WeiXin Script) 是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。

WXSS(WeiXin Style Sheet) 用于描述页面的样式。

组件(Component)是视图的基本组成单元。

2.1 数据绑定
<view class="container">
  <view class="userinfo">
   数据绑定:{{username}}
  </view>
</view>
// page.js
Page({
  data: {
    username: '君易'
  }
})

2.2  列表渲染
数组
<!--pages/index/user.wxml-->
<view class="container">
  列表渲染
  数组
  <view wx:for="{{array}}"> {{item}} </view>
</view>
// page.js
Page({
  data: {
    array: [1, 2, 3, 4, 5]
  }
})

对象
<!--pages/index/user.wxml-->
<view class="container">
  列表渲染
  对象
  <view wx:for="{{user}}">编号:{{item.id}} 名称:{{item.name}}</view>
</view>
 
// page.js
Page({
  data: {
   user:[{id:1,name:'木易'},
      {id:2,name:'曦曦'},
      {id:3,name:'君易'}]
  }
})

2.3 条件渲染
<!--pages/index/user.wxml-->
<view class="container">
条件渲染
  <!--wxml-->
<view wx:if="{{view == '木易'}}"> 木易 </view>
<view wx:elif="{{view == '君易'}}"> 君易 </view>
<view wx:else="{{view == '曦曦'}}"> 曦曦 </view>
</view>
// page.js
Page({
  data: {
    view: '木易'
  }
})

2.4 模版
<!--pages/index/user.wxml-->
<view class="container">
模版
<!--wxml-->
<template name="staffName">
  <view>
    FirstName: {{firstName}}, LastName: {{lastName}}
  </view>
</template>
<template is="staffName" data="{{...staffA}}"></template>
<template is="staffName" data="{{...staffB}}"></template>
<template is="staffName" data="{{...staffC}}"></template>
</view>
Page({
  data: {
    staffA: {firstName: '木易', lastName: '君易'},
    staffB: {firstName: '曦曦', lastName: '乖乖'},
    staffC: {firstName: '君易', lastName: '鑨'}
  }
})

        还有一些其他的案例演示,例如:WXSS、WXS、事件系统等等,我们可以去官网借鉴文档实现效果。

逻辑层

生成一个一级菜单,将一下代码添加到app.json中

"tabBar": {
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首页"
    }, {
      "pagePath": "pages/a/a",
      "text": "a页面"
    },{
      "pagePath": "pages/b/b",
      "text": "b页面"
    }]
  },

将index页面放在第一行作为首页,效果如下。

并且点击能实现页面跳转

页面跳转的几种情况:

1. 一级跳一级(a->b)

a页面:onload、onshow、onready

a页面跳b页面:a页面执行onHide

b页面:onload、onshow、onready

2. 一级跳二级 (a->c)

a页面跳c页面:a页面执行onHide

c页面:onload、onshow、onready

3. 二级跳一级

c->a :

c页面:onUnload

a页面:onshow

4.  二级跳二级(c->d)

c页面:onHide

d页面:onload、onshow、onready

d返回c:

d页面:onunload

c页面:onshow

4. 二级跳一级(c->b)

c页面:onUnload

b页面:onload、onshow、onready

5. 隔着页面跳(a->b->c->d->a)

c页面:onUnload

d页面:onUnload

a页面:onload、onshow、onready

总结:

(1)一级页面不会销毁

(2)二级页面跳转到层级低的页面会进行销毁

(3)二级层级低跳高的只会隐藏

(4)隔着页面跳转则会将中间的低级页面进行销毁。

       老铁们今天的分享到此,记得三连加关注哦

目录
相关文章
|
1天前
|
小程序 前端开发 持续交付
小程序全栈开发中的CI/CD流程与自动化部署是一种高效的开发模式。
本文探讨小程序全栈开发中的CI/CD流程与自动化部署,介绍持续集成与部署的概念,包括自动化构建、测试、代码审查及部署实践。通过提高代码质量、迭代速度及团队协作效率,确保小程序稳定运行与良好用户体验。
9 2
|
1天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录是一个重要而复杂的问题。
微信小程序作为业务拓展的新渠道,其全栈开发涉及前端与后端的紧密配合。本文聚焦小程序开发中的异常处理与日志记录,从前端的网络、页面跳转等异常,到后端的数据库、API调用等问题,详述了如何利用try-catch及日志框架进行有效管理。同时强调了集中式日志管理的重要性,并提醒开发者注意安全性、性能及团队协作等方面,以构建稳定可靠的小程序应用。
8 1
|
1天前
|
小程序 前端开发 API
微信小程序全栈开发中的多端适配与响应式布局是一种高效的开发模式。
探讨小程序全栈开发中的多端适配与响应式布局,旨在实现统一的用户体验。多端适配包括平台和设备适配,确保小程序能在不同环境稳定运行。响应式布局利用媒体查询和弹性布局技术,使界面适应各种屏幕尺寸。实践中需考虑兼容性、性能优化及用户体验,借助跨平台框架如Taro或uni-app可简化开发流程,提升效率。
7 1
|
1天前
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制是一个重要而复杂的问题。
微信小程序作为业务拓展的新渠道,其全栈开发中的身份认证与授权机制至关重要。本文概览了身份认证方法,包括手机号码验证、微信及第三方登录;并介绍了授权机制,如角色权限控制、ACL和OAuth 2.0。通过微信登录获取用户信息,利用第三方登录集成其他平台,以及实施角色权限控制和ACL,开发者能有效保障小程序的安全性和提供良好用户体验。此外,还强调了在实现过程中需注重安全性、用户体验和合规性。
5 0
|
7天前
|
小程序 JavaScript 前端开发
微信小程序开发必备前置知识:基本代码构成与语法
【8月更文挑战第8天】微信小程序的基本代码构成与语法
15 0
微信小程序开发必备前置知识:基本代码构成与语法
|
4天前
|
小程序 JavaScript
|
1月前
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——个人中心页面的制作
本文介绍了如何设计和实现一个网上花店的微信小程序,包括个人中心、我的订单和我的地址等功能模块。个人中心让用户能够查看订单历史、管理地址和与客服互动。代码示例展示了`own.wxml`、`own.wxss`和`own.js`文件,用于构建个人中心界面,包括用户信息、订单链接、收藏、地址、客服和版本信息。我的订单部分展示了订单详情,包括商品图片、名称、销量、价格和订单状态,用户可以查看和管理订单。我的地址功能允许用户输入和编辑收货信息,包括联系人、性别、电话、城市和详细地址。每个功能模块都附有相应的WXML和WXSS代码,以及简洁的样式设计。
71 0
【微信小程序开发实战项目】——个人中心页面的制作
|
1月前
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(3)
这是一篇关于微信小程序开发的文章摘要,作者介绍了如何创建一个网上花店小程序,旨在提供便捷的购花体验。小程序包含鲜花分类功能,允许用户按品种、颜色和用途筛选,确保快速找到合适的鲜花。它还提供了配送服务,保证鲜花的新鲜度。文章展示了`cash.wxml`、`cash.wxss`和`cash.js`的部分代码,用于实现分类和商品展示,以及`qin.wxml`、`qin.wxss`和`qin.js`,涉及商品详情和购买付款流程。代码示例展示了商品列表渲染和交互逻辑,包括页面跳转、数据传递和点击事件处理。文章最后提到了购买付款界面,强调了安全和便捷的支付体验。
67 0
【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(3)
|
1月前
|
小程序 开发者
uniapp实战 —— 开发微信小程序的调试技巧
uniapp实战 —— 开发微信小程序的调试技巧
70 1
|
1月前
|
移动开发 小程序 前端开发
uniap开发微信小程序如何在线预览pdf文件
这是一段关于在线预览和处理PDF的多方案说明,包括使用JavaScript库PDF.js(如`pdfh5.js`)实现H5页面预览,提供QQ群和技术博客链接以获取帮助和支持。还介绍了两个适用于Uni-app的插件,一个用于H5、小程序和App中的PDF预览和下载,另一个专门解决手机端PDF预览问题。此外,还详细描述了在Uni-app中使用微信小程序API`wx.openDocument`显示PDF的步骤,包括上传文件、配置权限和编写代码。
115 0