「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」
什么是WXS
wxs 是小程序中独有的一套脚本语言,结合 wxml,可以构建出页面的结构
WXS 的应用场景
.wxml 文件中无法调用页面 .js 文件中定义的函数,但是,wxml 中可以调用 wxs 中定义的函数,因此,小程序中的 wxs 的典型应用场景就是 过滤器(在渲染数据之前,对数据进行一种包装的处理)。通过过滤器的处理,最终把数据渲染到页面上
WXS 和 JavaScript 的关系
虽然 wxs 的语法类似于 JavaScript ,但是 wxs 和 JavaScript 是完全不同的俩种语言
wxs有自己的数据类型number数值类型string字符串类型boolen布尔类型object对象类型function函数类型array数组类型date日期类型regexp正则表达式
wxs不支持类似于 ES6 及以上的语法形式- 不支持:let、const、结构赋值、展开运算符、箭头函数、对象属性简写等等
- 支持:var定义变量、普通 function 函数等类似于 ES5 的语法
wxs遵循 CommonJS 规范module对象- require 函数
- module.rcports 对象
内嵌 wxs 脚本
wxs代码可以编写在wxml文件中的<wxs>标签内,就像JavaScript代码可以编写在html文件中的scrips标签内一样wxml文件中的每个<wxs></wxs>标签,必须提供module属性,用来指定当前wxs的模块名称,方便在wxml中访问模块中的成员
页面结构(.wxml 文件)
<view>{{m1.toUpper(username)}}</view>
<wxs module="m1">
module.exports.toUpper = function(str){
return str.toUpperCase()
}
</wxs>
定义外联的 wxs 脚本
wxs 代码还可以编写在以 .wxs 为后缀名的文件内,就像 JavaScript 代码可以编写在以 .js 为后缀名的文件中一样
-
外联
wxs脚本的创建- 创建一个以
.wxs为后缀的文件 - 在文件内声明一些方法或属性,
- 用
module.exports的方式向外共享这些方法或属性
function toLower(str){ return str.toLowerCase() } module.exports = { toLower: toLower } - 创建一个以
-
外联
wxs脚本的使用在
wxml中引入外联的wxs脚本时,必须为wxs标签添加module和src属性module用来指定模块的名称src用来指定要引入的脚本的路径,且必须是相对路径
//调用 m2 模块中的方法 <view>{{m2.toLower(country)}}</view> //引用外联 tools.wxs 脚本,并命名为m2 <wxs src="../../utils/tools.wxs" module="m2"></wxs>
wxs 的特点
-
与
JavaScript不同为了降低
wxs的学习成本,wxs语言在设计时借鉴了JavaScript的语法,但是本质上,wxs和JavaScript是完全不同的俩种语言 -
不能作为组件的事件回调
wxs典型的应用场景就是过滤器,经常配合Mustache语法进行使用<view>{{m2.toLower(country)}}</view>在
wxs中定义的函数不能作为组件的事件回调函数<button bindtap="m2.toLower(country)"> 跳转 </button> -
隔离性
隔离性:
wxs的运行环境和其他JavaScript代码是隔离的wxs不能调用js中定义的函数wxs不能调用小程序提供的API
-
性能好
在iOS设备上,小程序内的
wxs会比JavaScript代码快 2~20倍 在Android设备上,二者运行效率无差异