微信小程序:生命周期及WXS脚本

生命周期

小程序生命周期分为 应用生命周期、页面生命周期 和 组件生命周期。

应用生命周期

小程序应用生命周期写在 app.js 入口文件中。

生命周期说明
onLaunch小程序初始化完成时,只触发一次
onShow小程序启动 或 从后台进入前台
onHide小程序从前台进入后台
App({
    // 初始化完成
    onLaunch() {
        ...
    },
        
    // 进入前台
    onShow() {
        ...
    },
        
    // 进入后台
    onHide() {
        ...
    }
})

页面生命周期

页面生命周期写在 .js 中的 Page() 中。

生命周期说明
onLoad监听页面加载,一个页面只执行一次
onReady监听页面初次渲染完成,一个页面只执行一次
onShow监听页面显示
onHide监听页面隐藏
onUnload监听页面卸载
Page({
    // 生命周期函数--监听页面加载
    onLoad(options) {
        // 上个页面传递过来的参数
        console.log(options);
    },
    // 生命周期函数--监听页面初次渲染完成
    onReady() {
        ...
    },

    // 生命周期函数--监听页面显示
    onShow() {
		...
    },

    // 生命周期函数--监听页面隐藏
    onHide() {
		...
    },

    // 生命周期函数--监听页面卸载
    onUnload() {
		...
    },
})

组件生命周期

组件定义在 .js 的 lifetimes 中。

组件生命周期函数参数说明
created组件实例被创建时执行
attached组件实例进入页面节点树时执行
ready组件在视图层布局完成后执行
moved组件实例被移动到节点树另一个位置时执行
detached组件实例从节点树移除时执行
errorObject Error每次组件抛出错误时执行
{
    // 组件生命周期
    lifetimes: {
        attached() {},
        detached() {},
    },
}

组件所在页面的生命周期

组件页面的生命周期写在 .js 中的 pageLifetimes

Component({
    pageLifetimes: {
        show() {},	// 页面显示
        hide() {},	// 页面隐藏
        resize () {}	// 页面尺寸变化
    }
})

WXS 脚本

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

  • .wxml 中无法调用在页面的 .js 中定义的函数(不包括事件绑定),但是 .wxml 中可以调用 wxs 中定义的函数,因此 小程序中 wxs 一般作为过滤器使用。

数据类型

  • wxs 有自己的数据类型

    number 数值类型、 string 字符串类型、 boolean 布尔类型、 object 对象类型、 function 函数类型、 array 数组类型、 date 日期类型、 regexp 正则

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

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

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

  • wxs 遵循 CommonJS 规范

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

基础语法

wxs 代码一般编写在 .wxml 文件中的 <wxs> 标签内。

  • 内嵌式

    <!-- 语法格式 -->
    <text>{{ 模块名.方法名(属性名) }}</text>
    
    <wxs module="模块名">
    	module.exports.方法名 = function (参数) {
        	return 结果
        }
    </wxs>
    
    • 示例

      <!-- 页面wxml文件 -->
      <text>{{ m1.toUpper(username) }}</text>
      
      <wxs module="m1">
          <!-- 转大写脚本 -->
      	module.exports.toUpper = function (str) {
          	return str.toUpperCase()
          }
      </wxs>
      
      // 页面js文件
      Page({
          data() {
              username: 'zhangsan'
          }
      })
      
  • 外链式导入

    <!-- 语法格式 -->
    <wxs src="文件路径" module="模块名"></wxs>
    
    • 示例

      <text>m2.formatPhone(phone)</text>
      
      <wxs src="../../utils/utils.wxs" module="m2"></wxs>
      
      // 格式化电话
      function formatPhone (phone) {
          phone.split('')
          phone.splice(7,0,'-')
          phone.splice(3,0,'-')
          return phone.join('')
      }
      
      module.exports = {
          formatPhone
      }
      
  • 22
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤安先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值