## 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>
~~~
- Less
- 课程规划
- Less概述
- 变量
- 混合
- 嵌套
- 继承
- 导入
- 函数
- 其他
- 实战
- ES6
- 课程规划
- ES6概述
- let和const命令
- 变量的解构赋值
- 字符串扩展
- 函数扩展
- 数组扩展
- Set和Map数据结构
- Symbol
- Generator 函数
- Promise对象
- Class语法
- Module 的语法
- ES7和ES8
- 实战
- VUE
- 课程规划
- vue概述
- vue实例
- 模版语法
- 计算属性和侦听器
- Class和Style的绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 过渡和动画
- 自定义指令
- 过滤器
- 响应式原理
- 实战课程
- Node
- 课程规划
- 课程概述
- node入门实例
- 模块系统
- 回调函数
- 全局对象
- 常用模块介绍
- 常用模块介绍-1
- 常用模块介绍-2
- 常用模块介绍-3
- npm使用
- express的使用
- express的使用-1
- webpack基础
- 实战
- 微信小程序
- 课程规划
- 课程概述
- 基本配置和生命周期
- wxml模版
- wxss
- wxs
- 组件
- 微信API
- 自定义组件开发
- 实战小程序
- Element
- 课程规划
- 课程概述
- 特性介绍
- 组件介绍-基础组件
- 组件介绍-表单组件
- 组件介绍-数据展示组件
- 组件介绍-提示组件
- 组件介绍-导航组件
- 组件介绍-其他组件
- 综合案例