企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## wxs > WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。 注意 wxs 不依赖于运行时的基础库版本,可以在所有版本的小程序中运行。 wxs 与 javascript 是不同的语言,有自己的语法,并不和 javascript 一致。 wxs 的运行环境和其他 javascript 代码是隔离的,wxs 中不能调用其他 javascript 文件中定义的函数,也不能调用小程序提供的API。 wxs 函数不能作为组件的事件回调。 由于运行环境的差异,在 iOS 设备上小程序内的 wxs 会比 javascript 代码快 2 ~ 20 倍。在 android 设备上二者运行效率无差异。 示例 ~~~ <wxs module="m1"> var msg = "hello world"; module.exports.message = msg; </wxs> <view>{{m1.message}}</view> ~~~ ~~~ hello world ~~~ 数据处理 ~~~ // page.js Page({ data: { array: [1, 2, 3, 4, 5, 1, 2, 3, 4] } }) ~~~ ~~~ <!--wxml--> <!-- 下面的 getMax 函数,接受一个数组,且返回数组中最大的元素的值 --> <wxs module="m1"> var getMax = function(array) { var max = undefined; for (var i = 0; i <array.length; ++i) { max = max === undefined ? array[i] : (max >= array[i] ? max : array[i]); } return max; } module.exports.getMax = getMax; </wxs> <!-- 调用 wxs 里面的 getMax 函数,参数为 page.js 里面的 array --> <view>{{m1.getMax(array)}}</view> ~~~ ~~~ 5 ~~~ 1.WXS 模块 每一个 .wxs 文件和 <wxs> 标签都是一个单独的模块 每个模块都有自己独立的作用域。即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见。 一个模块要想对外暴露其内部的私有变量与函数,只能通过 module.exports 实现。 ~~~ // /pages/tools.wxs const foo = "'hello world' from tools.wxs" const bar = function (d) { return d } module.exports = { FOO: foo, bar, } module.exports.msg = 'some msg' ~~~ ~~~ <!-- page/index/index.wxml --> <wxs src="./../tools.wxs" module="tools" /> <view>{{tools.msg}}</view> <view>{{tools.bar(tools.FOO)}}</view> ~~~ ~~~ some msg 'hello world' from tools.wxs ~~~ require函数 ~~~ const tools = require('./tools.wxs') console.log(tools.FOO) console.log(tools.bar('logic.wxs')) console.log(tools.msg) ~~~ module 属性 module 属性是当前 <wxs> 标签的模块名。在单个 wxml 文件内,建议其值唯一。有重复模块名则按照先后顺序覆盖(后者覆盖前者)。不同文件之间的 wxs 模块名不会相互覆盖。 module 属性值的命名必须符合下面两个规则: * 首字符必须是:字母(a-zA-Z),下划线(_) * 剩余字符可以是:字母(a-zA-Z),下划线(_), 数字(0-9) 2.变量 * WXS 中的变量均为值的引用。 * 没有声明的变量直接赋值使用,会被定义为全局变量。 * 如果只声明变量而不赋值,则默认值为 undefined。 * var表现与javascript一致,会有变量提升。 命名规则 * 首字符必须是:字母(a-zA-Z),下划线(_) * 剩余字符可以是:字母(a-zA-Z),下划线(_), 数字(0-9) 保留字符串 ~~~ delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for while do break continue switch case default ~~~ 3.注释 WXS 主要有 3 种注释的方法。 ~~~ <!-- wxml --> <wxs module="sample"> // 方法一:单行注释 /* 方法二:多行注释 */ /* 方法三:结尾注释。即从 /* 开始往后的所有 WXS 代码均被注释 var a = 1; var b = 2; var c = "fake"; </wxs> ~~~