WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。
在wxml页面中,只能在插值{{ }}中写简单的js表达式,而不能调用方法。wxs就是为了能在页面中使用js而存在的。
WXS 中不支持let和const,不支持箭头函数。
注释:
WXS 主要有 3 种注释的方法:
// 方法一:单行注释 <!-- wxml --> /* 方法二:多行注释 */ /*
方法三:结尾注释。即从 /* 开始往后的所有 WXS 代码均被注释
变量:
WXS 中的变量均为值的引用。没有声明的变量直接赋值使用,会被定义为全局变量。如果只声明变量而不赋值,则默认值为 undefined。var表现与javascript一致,会有变量提升。
变量命名必须符合下面两个规则:
- 首字符必须是:字母(a-zA-Z),下划线(_)
- 剩余字符可以是:字母(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);