微信小程序中的WXS语法

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

在wxml页面中,只能在插值{{ }}中写简单的js表达式,而不能调用方法。wxs就是为了能在页面中使用js而存在的。

WXS 中不支持let和const,不支持箭头函数。

 

注释:
WXS 主要有 3 种注释的方法:

// 方法一:单行注释
<!-- wxml -->

/*
方法二:多行注释
*/

/*
方法三:结尾注释。即从 /* 开始往后的所有 WXS 代码均被注释

 

变量:
WXS 中的变量均为值的引用。没有声明的变量直接赋值使用,会被定义为全局变量。如果只声明变量而不赋值,则默认值为 undefined。var表现与javascript一致,会有变量提升。

变量命名必须符合下面两个规则:

  1. 首字符必须是:字母(a-zA-Z),下划线(_)
  2. 剩余字符可以是:字母(a-zA-Z),下划线(_), 数字(0-9)


数据类型:
WXS 语言目前共有以下几种数据类型:string、number、boolean、object、array、function、date、regexp。

生成 date 对象需要使用 getDate函数, 返回一个当前时间的对象。

var date = getDate(1500000000000);

生成 regexp 对象需要使用 getRegExp函数。

var reg = getRegExp('(\d)(?=(?:\d{3}[+]?)+$)','g');

 

模块:
WXS 代码可以编写在 wxml 文件中的 <wxs> 标签内,或以.wxs 为后缀名的文件内。

 

导出:
每一个 .wxs 文件和 <wxs> 标签都是一个单独的模块。每个模块都有自己独立的作用域,即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见。一个模块要想对外暴露其内部的私有变量与函数,只能通过 module.exports 实现。

每个 wxs 模块均有一个内置的 module 对象。module 对象有一个exports属性,通过该属性,可以对外共享本模块的私有变量与函数。

// utils.wxs
var formatNumber = function(val){
var reg = getRegExp('(\d)(?=(?:\d{3}[+]?)+$)','g');
return (val>1000) ? val.toString().replace(reg, '$1,') : val;
}
module.exports = {
formatNumber: formatNumber
}

 

导入:
只能引用 .wxs 文件模块,且必须使用相对路径。
wxs 模块均为单例,wxs 模块在第一次被引用时,会自动初始化为单例对象。多个页面,多个地方,多次引用,使用的都是同一个 wxs 模块对象。
如果一个 wxs 模块在定义之后,一直没有被引用,则该模块不会被解析与运行。

1.在.wxml中引用:
<wxs> 标签的属性:

module:当前 <wxs> 标签的模块名。必填字段。module 属性值的命名必须符合以下规则:首字符必须是字母(a-zA-Z),下划线(_);剩余字符可以是:字母(a-zA-Z),下划线(_), 数字(0-9)。有重复模块名则按照先后顺序覆盖(后者覆盖前者)。
src:引用 .wxs 文件的相对路径。

//home.wxml
<wxs src="../../utils/utils.wxs" module="utils"></wxs>
<text>{{utils.formatNumber(fanNum)}}</text>


2.在.wxs模块中引用其他 wxs 文件模块,可以使用 require 函数。

// utils.wxs
var tools = require("./tools.wxs");
console.log(tools.msg);

 

posted @ 2021-07-31 13:27  何以平天下  阅读(1123)  评论(0编辑  收藏  举报