微信小程序生命周期和WXS使用实例详解

 更新时间:2022年08月19日 11:27:36   作者:亦世凡华、  
微信小程序中的wxs文件,大家或多或少都有见过,下面这篇文章主要给大家介绍了关于微信小程序生命周期和WXS使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

引言

经过web前端开发的学习,相信大家对于前端开发有了一定深入的了解,今天我开设了微信小程序专栏,主要想从移动端开发方向进一步发展,而对于我来说写移动端博文的第一站就是小程序开发,希望看到我文章的朋友能对你有所帮助。

生命周期

生命周期(Life Cycle)是指一个对象从创建->运行->销毁的整个阶段,强调的是一个时间段;小程序运行的过程也是有生命周期,小程序的启动表示生命周期的开始、小程序的关闭表示生命周期的结束,中间小程序运行的过程就是小程序的生命周期。

生命周期分类

在小程序中,生命周期分为两类,分别是:

应用生命周期:特指小程序从启动 -> 运行 -> 销毁的过程

页面生命周期:特指小程序中,每个页面的加载 -> 渲染 -> 销毁的过程

其中,页面的生命周期范围比较小,应用程序的生命周期范围比较大。

生命周期函数

生命周期函数:是由小程序框架提供的内置函数,会伴随着生命周期,自动按次序执行

生命周期函数的作用:允许程序员在特定的时间点,执行某些特定的操作。例如:页面刚加载的时候,可以在 onLoad 生命周期函数中初始化页面的数据。

注意:生命周期强调的是时间段生命周期函数强调的是时间点

生命周期函数分类

小程序中的生命周期分为两类,分别是:

应用生命周期函数:特指小程序从启动 -> 允许 -> 销毁期间依次调用的那些函数

小程序的应用生命周期函数需要在 app.js 中进行声明,代码如下:

// app.js
App({
  //当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
  onLaunch: function () {
 
  },
  //当小程序启动,或从后台进入前台显示,会触发 onShow
  onShow: function (options) {
 
  },
  //当小程序从前台进入后台,会触发 onHide
  onHide: function () {
 
  }
})

我们可以在微信开发者工具来模拟前台切入后台,后台切入前台时触发的函数的过程。

如果没有在导航工具栏看到切后台的选项,可以在进行如下操作:

找到工具栏管理,勾选上切后台即可。

页面生命周期函数:特指小程序中,每个页面从加载 -> 渲染 -> 销毁期间依次调用的那些函数

小程序的页面生命周期需要在页面的.js文件中进行声明

//页面.js文件
Page({
    onLoad  : function(options){ }, //监听页面加载,一个页面只调用一次
    onShow  : function() { },       //监听页面显示
    onReady : function() { },       //监听页面初次渲染完成,一个页面只调用一次
    onHide  : function() { },       //监听页面隐藏
    onUnload: function() { }        //监听页面卸载,一个页面只调用一次
})

组件生命周期会在讲解组件方面的时候讲解。

WXS

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

wxml中无法调用在页面的.js中定义的函数,但是wxml中可以调用wxs中定义的函数,因此,小程序中的wxs的典型应用场景就是“过滤器”。

wxs 和 JavaScript 的关系*

wxs语法类似于JavaScript,但 wxs 和 JavaScript 是两种不同的两种语言。

wxs有自己的数据类型

number数值类型、string字符串类型、boolean布尔类型、object对象类型、function函数类型

array数组类型、date日期类型、regexp正则

wxs不支持类似于 ES6 以上的语法形式

不支持:let、const、解构赋值、展开运算符、箭头函数、对象属性简写等

支持:var 定义变量、普通function函数等类似于ES5的语法

wxs遵循CommonJS规范

module对象、require()函数、module.exports对象

内嵌 wxs 脚本

wxs代码可以编写在 wxml 文件中的<wxs>标签内,就像JavaScript代码可以编写在html文件中的<script>标签一样。

wxml文件中的每个<wxs></wxs>标签,必须提供module属性,用来指定当前 wxs 的模块名称,方便在wxml中访问模块中的成员。

<view>{{wxs.toUpper(username)}}</view>
 
<wxs module="wxs">
  //将模块方法暴露出去
  module.exports.toUpper = function(str){
    return str.toUpperCase()
  }
</wxs>

外联 wxs 脚本

wxs代码可以在以.wxs为后缀名的文件内,和JavaScript可以编写在.js为后缀名的文件中一样。

//在.wxs文件下写如下代码,在.wxs文件中同样要将文件暴露出去
function toLower(str){
  return str.toLowerCase()
}
module.exports = {
  toLower:toLower
}

在wxml中引入外联的 wxs 脚本时,必须为 <wxs> 标签添加 module (用来指定模块的名称) 和 src (用来指定要引入的脚本路径,且必须是相对路径) 属性。

WXS特点

与JS关系

为了降低wxs(WeiXin Script)的学习成本,wxs语言在设计时借鉴了大量的JavaScript语法。但在本质上,wxs 和 JavaScript是完全不同的两种语言!

不能作为组件的事件回调

wxs典型的应用场景就是过滤器,经常配合Mustache语法进行使用,但是,在wxs中定义的函数不能作为组件的事件回调函数。

隔离性

指的是wxs的运行环境和其他JavaScript代码是隔离的,wxs不能调用js中定义的函数,wxs不能调用小程序提供的API

性能好

在iOS设备上,小程序内的WXS会比JavaScript代码快2~20倍。

在安卓设备上,两者运行效率无差异

补充:适用场景

  • 用户交互频繁、仅需改动组件样式(比如布局位置),无需改动数据内容的场景,比如侧滑菜单、索引列表、滚动渐变等
  • 纯粹的逻辑计算,比如文本、日期格式化,通过 WXS 可以模拟实现 Vue 框架的过滤器, 如下是一个通过 wxs 便捷实现首字母大写的示例
<wxs module="m1">
  // 首字母大写
  var capitalize = function(value) {
    if (!value) return ''
    value = value.toString()
    return value.charAt(0).toUpperCase() + value.slice(1)
  }
  module.exports = {
    capitalize: capitalize
  }
</wxs>
<view class="content">
  <view class="text-area">
    <!-- title 为当前页面 data 中定义的初始数据 -->
    <text class="title">{{m1.capitalize(title)}}</text>
  </view>
</view>

总结 

到此这篇关于微信小程序生命周期和WXS使用的文章就介绍到这了,更多相关小程序生命周期和WXS使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js实现Tab选项卡切换效果

    js实现Tab选项卡切换效果

    这篇文章主要为大家详细介绍了js实现Tab选项卡切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • layui 框架的upload上传文件的data参数传到后端的方法

    layui 框架的upload上传文件的data参数传到后端的方法

    这篇文章主要介绍了layui框架的upload上传文件的data参数传到后端的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • Knockout结合Bootstrap创建动态UI实现产品列表管理

    Knockout结合Bootstrap创建动态UI实现产品列表管理

    这篇文章主要为大家详细介绍了Knockout结合Bootstrap创建动态UI实现产品列表管理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 微信小程序 组件的外部样式externalClasses使用详解

    微信小程序 组件的外部样式externalClasses使用详解

    这篇文章主要介绍了微信小程序里 组件的外部样式externalClasses使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 微信小程序实现登录界面

    微信小程序实现登录界面

    这篇文章主要为大家详细介绍了微信小程序实现登录界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • IE6弹出“已终止操作”的解决办法

    IE6弹出“已终止操作”的解决办法

    导致这个问题产生的原因,一般是因为js(一个比较复杂的js)写在body里面,在body元素加载完之前调用出现问题。显然,解决该问题的方法就是将这一段js放在body元素解析完毕之后。
    2010-11-11
  • javascript实现秒表计时器的制作方法

    javascript实现秒表计时器的制作方法

    这篇文章主要为大家详细介绍了javascript实现秒表计时器的制作方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 微信小程序教程系列之新建页面(4)

    微信小程序教程系列之新建页面(4)

    这篇文章主要为大家详细介绍了微信小程序新建页面的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • JavaScript中获取元素索引的函数

    JavaScript中获取元素索引的函数

    相信使用过jQuery的朋友都知道index()方法, 她可以很方便的帮你找到当前元素在元素集合中索引位置. 那么, 原生JavaScript中如何获取呢?
    2010-09-09
  • JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)

    JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)

    下面小编就为大家分享一篇JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论