小程序框架语法详解以及页面生命周期的代码预演

2023-10-16 23:54

本文主要是介绍小程序框架语法详解以及页面生命周期的代码预演,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、框架简介

二、视图层

2.1 简介

2.2 WXML语法演示

2.2.1 数据绑定

2.2.2 列表渲染

2.2.3 条件渲染

2.2.4 模板

2.3 事件系统

2.4 页面一级菜单展示及切换

2.5 a页面跳b页面界面内部按钮演示

2.6 a页面跳c页面(不在一级菜单内的页面)

三、页面生命周期

3.1 详解

3.2 图解

3.3 代码预演

3.3.1 一级跳一级

3.3.2 一级跳二级

3.3.3 二级跳二级

3.3.4 页面隔代跳转

3.4 代码预演结果总结

四、收获


一、框架简介

微信小程序框架是一种开发小程序的基础结构,它提供了一组规范和工具,用于构建、管理和运行微信小程序。微信小程序框架的主要作用是简化小程序开发过程,提供一种结构化的方式来组织代码,使开发者能够更轻松地创建小程序应用。以下是关于微信小程序框架的一些重要信息:

  1. 基本架构:微信小程序框架通常由三个主要部分组成:

    • 逻辑层:这是小程序的核心,用于处理小程序的业务逻辑。逻辑层使用JavaScript编写,并包括页面逻辑、网络请求、数据处理等。
    • 视图层:视图层负责渲染小程序的界面,通常使用WXML(类似于HTML)和WXSS(类似于CSS)来定义页面结构和样式。
    • 配置:小程序的全局配置,包括小程序的名称、页面路径、tabBar等信息。
  2. 双向绑定:微信小程序框架支持数据的双向绑定,这意味着数据的变化会自动更新到页面上,而页面上的操作也可以反馈到数据模型中。这有助于实现实时的界面更新。

  3. 事件处理:框架提供了丰富的事件处理机制,允许开发者为页面元素绑定事件处理函数,例如点击事件、输入事件等。

  4. 小程序生命周期:框架定义了小程序的生命周期,包括onLoad、onShow、onReady、onHide、onUnload等生命周期函数,开发者可以在这些函数中执行特定的操作。

  5. 模块化开发:微信小程序框架支持模块化开发,允许开发者将代码划分为模块,提高了代码的可维护性和重用性。

  6. 网络请求:框架提供了内置的网络请求API,用于与服务器通信,获取数据并更新页面。

  7. 本地存储:小程序框架允许开发者使用本地存储功能,将数据保存在用户的设备上,以提高小程序的性能和用户体验。

  8. 第三方库支持:微信小程序框架支持使用第三方JavaScript库,以扩展小程序的功能和效率。

  9. 跨平台开发:微信小程序框架可以在不同平台上运行,包括iOS、Android和Web,这使得开发者可以更轻松地跨平台开发应用。

总的来说,微信小程序框架为开发者提供了一种方便、高效的方式来创建小程序应用。开发者可以使用框架提供的工具和规范来管理小程序的结构和功能,从而快速开发出具备良好用户体验的小程序应用。

二、视图层

2.1 简介

微信小程序框架的视图层是小程序应用的界面渲染部分,负责展示用户界面和处理用户交互。以下是有关微信小程序框架视图层的简介:

  1. WXML(WeiXin Markup Language):WXML是一种类似于HTML的标记语言,用于定义小程序的页面结构。与HTML不同,WXML更加精简,包含少量标签和属性,专注于描述页面的结构。在WXML中,你可以定义视图元素、组件、数据绑定等。

  2. WXSS(WeiXin Style Sheet):WXSS是一种类似于CSS的样式定义语言,用于控制小程序页面的样式。你可以在WXSS中定义样式规则,包括颜色、字体、布局等,然后将这些规则应用于WXML中的元素。微信小程序框架支持类似CSS的选择器,使样式定义更灵活。

  3. 组件:微信小程序框架提供了一系列内置组件,如viewtextbuttonimage等,用于构建页面元素。除了内置组件,你还可以创建自定义组件,以便在不同页面中重复使用相同的功能或界面元素。

  4. 数据绑定:视图层支持数据绑定,这意味着你可以将数据绑定到页面上,实现数据的动态展示。通过使用双花括号{{}},你可以将页面的元素和数据模型关联起来。当数据模型中的数据发生变化时,页面会自动更新以反映这些变化。

  5. 事件处理:你可以在视图层中定义事件处理函数,以响应用户的交互操作,如点击事件、触摸事件等。事件处理函数通常使用bindcatch前缀来绑定到相应的组件上。

  6. 模板和条件渲染:微信小程序框架支持模板的使用,你可以将一组相同结构的元素封装为一个模板,并在不同位置引用它们,提高代码的重用性。另外,你可以使用条件渲染来控制在不同条件下渲染不同的内容。

  7. 页面栈管理:微信小程序框架维护了一个页面栈,允许你在不同页面之间进行导航。你可以通过wx.navigateTowx.redirectTo等API来管理页面栈,实现页面之间的切换和导航。

  8. 动画效果:视图层支持添加动画效果,通过wx.createAnimation和动画API来实现元素的平移、旋转、缩放等动画效果,增强用户体验。

总的来说,微信小程序框架的视图层提供了丰富的工具和功能,用于构建小程序的用户界面,实现数据展示、用户交互和界面美化。通过合理使用WXML、WXSS、组件和事件处理,开发者可以创建各种类型的小程序应用,从简单的信息展示页面到复杂的交互应用。

2.2 WXML语法演示

在进行代码演示前我们先新建四个今天要用的新页面,在昨天的代码上加上新的代码,如下:

 "pages/a/a","pages/b/b","pages/c/c","pages/d/d",

紧接着开发工具会自动生成目录,如下:

2.2.1 数据绑定

在a.wxml文件中加入以下代码,如下:

<!--pages/a/a.wxml-->
<view>{{message}}</view>

然后在a.js中data下加入message代码,如下:

/*** 页面的初始数据*/data: {message:'Hello 页面1!'},

模拟器展示效果如下:

2.2.2 列表渲染

在a.wxml中加入以下代码,如下:

<view wx:for="{{array}}"> {{item}} </view>

在a.js中加入以下代码,如下:

array:[1,2,3,4,5],

模拟器展示效果如下:

但是我们写小程序一般在数组中放的都是对象,那么代码应该如下:

在a.js加入:

users: [{ id: 1, name: '刘三金' }, { id: 2, name: '疯翰林' }, { id: 3, name: '丧表锅' }]

在a.wxml加入:

<view wx:for="{{users}}" wx:key="id">用户编号:{{item.id}};用户姓名:{{item.name}};</view>

模拟器展示效果如下:

2.2.3 条件渲染

在a.wxml中加入以下代码,如下:

<!--wxml-->
<view wx:if="{{view == '1'}}"> "生命如同骑自行车,想要保持平衡就得不断前进。" — 阿尔伯特·爱因斯坦 </view>
<view wx:elif="{{view == '2'}}"> "行动胜过千言万语。" — 狄奥尼修斯 </view>
<view wx:else="{{view == '3'}}"> "时刻保持好奇心,保持学习的态度。" — 斯蒂芬·霍金 </view>

在a.js中data代码块下加入view,如下:

view:3

条件渲染演示效果如下:

2.2.4 模板

在a.wxml中加入以下代码,如下:

<!--wxml-->
<template name="staffName"><view>炙热沙城II: {{firstName}}, 炼狱小镇: {{lastName}}</view>
</template>
<template is="staffName" data="{{...staffA}}"></template>
<template is="staffName" data="{{...staffB}}"></template>
<template is="staffName" data="{{...staffC}}"></template>

在a.js中data代码块下加入以下代码,如下:

 staffA: {firstName: 'B1', lastName: '锅炉房'},staffB: {firstName: 'XBOX', lastName: '旋梯'},staffC: {firstName: '沙地', lastName: '连接'}

模拟器演示效果如下:

2.3 事件系统

事件使用:首先在a.wxml中加入以下代码:

<view id="tapTest" data-hi="找不到我吧" data-meetingSteate="1" bindtap="tapName"> 点我!!! </view>

然后在a.js中加入:

 tapName: function(event) {console.log(event)},

模拟器效果展示如下:

那么当我们想拿到data-hi以及data-meetingSteate中的值时,我们可以进行以下操作:

在tapName代码块下加入:

console.log(event.target.dataset);

模拟器展示效果如下:

2.4 页面一级菜单展示及切换

参考微信开发文档,全局配置进行代码优化,如下:

在app.json中加入以下代码,如下:

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

然后把主页面挪到所有页面最上方,如下:

紧接着我们通过模拟器观看效果,如下:

这样我们的小程序页面一级菜单及切换就完成了。 那么假如我们现在还有一个c页面,并不在一级菜单栏中,又该如何跳转呢?这就牵扯到生命周期了,下面听博主娓娓道来。

2.5 a页面跳b页面界面内部按钮演示

在a.wxml中加入以下代码:

<button bindtap="atob">a页面跳b页面</button>

在a.js中加入以下代码:

atob:function() {wx.switchTab({url: '/pages/b/b',})},

然后保存重新编译代码打开模拟器查看演示效果,如下:

2.6 a页面跳c页面(不在一级菜单内的页面)

在a.wxml中加入按钮代码如下:

<button bindtap="atoc">a页面跳c页面</button>

在a.js中加入以下代码,如下:

 atoc:function() {wx.navigateTo({url: '/pages/c/c',})},

模拟器展示如下:

接下来就是生命周期的理解了。

三、页面生命周期

3.1 详解

微信小程序的逻辑层生命周期是指在小程序的运行过程中,逻辑层(JavaScript 文件)中的不同生命周期函数被调用的顺序。这些生命周期函数允许你在不同的时刻执行特定的操作,以响应小程序的生命周期事件。以下是微信小程序逻辑层的主要生命周期函数及其调用顺序:

  1. onAppLaunch(options):当小程序初始化启动时调用,只在小程序第一次启动时触发。

  2. onLaunch(options):当小程序初始化启动时调用,包括首次进入小程序和后台切前台。

  3. onShow(options):当小程序启动,或从后台切前台时调用,可以获得进入小程序的路径、场景值等信息。

  4. onHide():当小程序从前台切入后台时调用。

  5. onError(error):当小程序发生脚本错误或 API 调用失败时调用,可以用于监测和上报错误。

  6. onPageNotFound(options):当小程序页面不存在时触发,可以用于自定义页面不存在时的行为。

  7. onUnhandledRejection:当 Promise 被 reject 且没有错误处理函数时,会触发此函数。

  8. onThemeChange:当系统主题变化时,触发此函数。

除了上述的生命周期函数,逻辑层还可以定义页面级别的生命周期函数,这些函数通常在对应的页面文件中定义。例如:

  1. onLoad(options):在页面加载时触发,可以获得页面跳转时传递的参数。

  2. onShow():当页面显示时触发。

  3. onReady():当页面初次渲染完成时触发,表示页面已经准备就绪。

  4. onHide():当页面从前台切入后台时触发。

  5. onUnload():当页面被销毁时触发,如页面被关闭或切换到其他页面。

这些生命周期函数允许你在不同的时机执行代码,以实现特定的功能和逻辑。理解这些生命周期函数的调用顺序对于开发小程序非常重要,因为它们决定了何时执行特定的操作,如数据加载、页面渲染、事件绑定等。

3.2 图解

官方图解生命周期:

3.3 代码预演

页面跳转的几种情况罗列:

  1. 一级跳一级
  2. 一级跳二级
  3. 二级跳二级
  4. 二级跳一级(通过js的路由方式去跳转页面)
  5. 页面隔代跳转 (即从a-b-c-d-a,从a页面跳到b页面依次跳转最后跳到d页面,然后从d页面直接跳转回a页面,这种情况下b页面跟c页面的数据到底会不会丢失?)

然后我们把四个界面的js页面中生命周期函数用console.log打印出来,如下:

 /*** 生命周期函数--监听页面加载*/onLoad(options) {console.log("a.onLoad");},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {console.log("a.onReady");},/*** 生命周期函数--监听页面显示*/onShow() {console.log("a.onShow");},/*** 生命周期函数--监听页面隐藏*/onHide() {console.log("a.onHide");},/*** 生命周期函数--监听页面卸载*/onUnload() {console.log("a.onUnload");},

3.3.1 一级跳一级

具体操作如下:

可以看到我们一级菜单跳一级菜单出发了三个生命周期函数,分别是:

index—>a

a.onLoad,a.onShow,a.onReady

a—>b

a.onHide,b.onLoad,b.onShow,b.onReady

3.3.2 一级跳二级

具体效果如下:

a—>c(一级跳二级)

a.onHide,c.onLoad,c.onShow,c.onReady

c—>a(二级返回一级)

c.onUnload,a.onShow

3.3.3 二级跳二级

为了演示需求,我们需要在二级菜单(即c页面添加按钮进行跳转),添加的代码如下:

在c.wxml中加入以下代码:

<button bindtap="ctod">c页面跳d页面</button>
<button bindtap="ctob">c页面跳b页面</button>

在c.js中加入以下代码,如下:

 ctod:function() {wx.navigateTo({url: '/pages/d/d',})},ctob:function() {wx.switchTab({url: '/pages/b/b',})},

添加完之后我们就可以进行代码预演了,模拟器演示如下:

c—>d

c.onHide,d.onLoad,d.onShow,d.onReady

d—>c

d.onUnload,c.onShow

c—>a

c.onUnload,a.onShow

3.3.4 页面隔代跳转

模拟器代码预演操作如下:

a—>c—>d—>a

d.onUnload,c.onUnload,a.onShow

3.4 代码预演结果总结

  1. 一级不会销毁.
  2. 二级层级深的跳到层级低的会销毁.
  3. 二级层级低跳到高的只会隐藏.
  4. 隔代中间所有页面会被销毁.

四、收获

学习小程序框架页面生命周期是非常重要的,因为它们决定了小程序页面在不同阶段执行的操作。页面生命周期函数允许你在不同的时间点执行特定的逻辑,以确保你的小程序页面能够按照预期工作。

以下是一些关于小程序页面生命周期的收获:

通过充分理解这些生命周期函数,你可以更好地掌握小程序页面的开发和控制页面的行为。你可以在不同的生命周期函数中执行不同的操作,确保页面能够响应用户的操作和事件,以提供更好的用户体验。同时,你还可以利用生命周期函数来处理资源管理和性能优化,以确保小程序的流畅运行。


最后小程序框架语法详解以及页面生命周期的代码预演就到这里,祝大家在敲代码的路上一路通畅!

感谢大家的观看 !

 

这篇关于小程序框架语法详解以及页面生命周期的代码预演的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/221594

相关文章

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Java Predicate接口定义详解

《JavaPredicate接口定义详解》Predicate是Java中的一个函数式接口,它代表一个判断逻辑,接收一个输入参数,返回一个布尔值,:本文主要介绍JavaPredicate接口的定义... 目录Java Predicate接口Java lamda表达式 Predicate<T>、BiFuncti

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

一文详解JavaScript中的fetch方法

《一文详解JavaScript中的fetch方法》fetch函数是一个用于在JavaScript中执行HTTP请求的现代API,它提供了一种更简洁、更强大的方式来处理网络请求,:本文主要介绍Jav... 目录前言什么是 fetch 方法基本语法简单的 GET 请求示例代码解释发送 POST 请求示例代码解释

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.