开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
什么是wxs
WXS是小程序的脚本语言,结合WXML,可以构建出页面结构。
WXS与js是不同的语言,有些相似是因为都采用ECMA标准。
wxs的特点/与js的区别
- wxs不依赖于运行时的基础库版本,可以在所有版本的小程序中运行(因为它是微信软件本身进行解析的,没有版本库依然运行)
- wxs与js是不同的语言,有自己的语法,并不和js一致(只是都遵循ECMA标准)
- wxs的运行环境和其他js代码是隔离的(没有在一块运行,是分开的)所以wxs中不能调用其他js文件中定义的函数,也不能调用小程序提供的API(因为小程序的API是基于js来写的,只能在js文件中调用)
- wxs函数不能作为组件的事件回调
- 由于运行环境的差异,在ios设备上的小程序内的wxs会比js代码快2~20倍。在Android设备上二者运行效率无差异(在安卓上用不用意义不大。)
wxs 模块
WXS代码可以编写在WXML文件中的标签内,或以.wxs为后缀名的文件内。
模块
每一个.wxs文件和标签都是一个单独的模块,每个模块都有自己独立的作用域,即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见。一个模块要想对外暴露其内部的私有变量与函数,只能通过module.exports实现
wxs标签的属性
1. module:当前<wxs>标签的模块名。必填字段
2. src:引用.wxs文件的相对路径,仅当本标签为单闭合标签或标签内容为空时生效。
module属性
module属性是当前<wxs>标签的模块名。在单个wxml文件内,建议其值唯一。有重复模块名则按照先后顺序覆盖(后者覆盖前者)。不同文件之间的wxs模块名不会相互覆盖。<br/>
- module命名规则
- 首字符必须是:字母、下划线
- 剩余字符可以是:字母、下划线、数字
src属性
src 属性可以用来引用其他的 wxs 文件模块。
引用的时候,要注意如下几点:
- 只能引用
.wxs文件模块,且必须使用相对路径。 wxs模块均为单例,wxs模块在第一次被引用时,会自动初始化为单例对象。多个页面,多个地方,多次引用,使用的都是同一个wxs模块对象。- 如果一个
wxs模块在定义之后,一直没有被引用,则该模块不会被解析与运行。
引用wxs的方式
1. 外链式:<wxs src="相对路径" module="模块名称"></wxs>
2. 内嵌式:在wxml文件中直接使用wxs标签。<wxs module="模块名称">,记得用module.exports暴露出来。
变量
概念
- WXS中的变量均为值的引用。
- 没有声明的变量直接赋值使用,会被定义为全局变量。
- 如果只声明变量而不赋值,则默认值为undefined。
- var表现与js一致,会有变量提升(也就是先使用后创建)
变量名
变量命名必须符合下面两个规则
- 首字符必须是:
字母(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。
注释
WXS主要有3种注释的方法
- 方法一:单行注释 //
- 方法二: 多行注释 /**/
- 方法三: /* (这是结尾注释,即从/*开始往后的所有wxs代码均被注释。
运算符
- 基本运算符:
+,-,*,/,% - 一元运算符:
自增++,自减--,正值+,负值-,否运算~,取反运算!,delete运算,void运算(取空,返回值是undefined),typeof运算 - 位运算符(位移):
左移<<,右移>>等等 - 比较运算符:
大于>,小于<,大于等于>=,小于等于<= - 等值运算符:
等号(内置隐式类型转换)==,非等号!==,全等号===,非全等!== - 赋值运算符:
=,+=,-=,*=,/=,%=等等 - 二元逻辑运算符:
逻辑与&&,逻辑或|| - 其他运算符:
条件运算符(三目)? :,逗号运算符,
否运算,数值的话结果是+1,然后取负数。字符串的话结果为-1.下面的例子结果是-16
语句
if语句
if...else语句
if...else if...else
switch语句
- default分支可以省略不写
- case关键词后只能使用:变量,数字,字符串
for语句
支持使用break,continue关键词
while语句
- 当表达式为true时,循环执行语句或代码块。
- 支持使用break,continue关键词。
数据类型
wxs语言目前共有以下几种数据类型:
- number:数值
- string:字符串
- Boolean:布尔值
- object:对象
- function:函数
- array:数组
- date:日期
- regexp:正则
number包括两种数值:整数,小数
属性
- constructor(判断数据类型):返回字符串‘Number’
方法
- toString
- toLocaleString
- valueOf
- toFixed
- toExponential
- toPrecision
boolean
语法
布尔值只有两个特定的值:true和false
方法
- toString
- valueOf
object
语法
object是一种无序的键值对,使用方法如下所示
方法
toString :返回字符串[object object]
function
定义函数的方式
还支持匿名函数,闭包等写法
arguments
function里面可以使用arguments关键词,该关键词目前只支持以下属性:
- length:传递给函数的参数个数
array
定义数组的两个方式
方法
toString,concat,join,pop,push,reverse,shift,slice,sort,splice,unshift,indexOf,lastIndexOf,every,some,forEach,map,filter,reduce,reduceRight。
date
生成date对象需要使用getDate函数,返回一个当前时间的对象。
-
参数
milliseconds: 从1970年1月1日00:00:00 UTC开始计算的毫秒数datestring: 日期字符串,其格式为:"month day, year hours:minutes:seconds"
regexp
生成regexp对象需要使用getRegExp函数
-
参数:
-
pattern: 正则表达式的内容。 -
flags:修饰符。该字段只能包含以下字符:g: globali: ignoreCasem: multiline。
-
数据类型判断
- constructor:可以判断任何类型
2. typeof用来判断基本数据类型
基础类库
console
console.log方法用于在console窗口输出信息,它可以接受多个参数。将他们的结果连接起来输出
Math
方法
absacosasinatanatan2ceilcosexpfloorlogmaxminpowrandomroundsinsqrttan
JSON
方法
- stringify(object):将object对象转换为JSON字符串,并返回该字符串。
- parse(string):将JSON字符串转化为对象,并返回该对象
Number
属性
MAX_VALUEMIN_VALUENEGATIVE_INFINITYPOSITIVE_INFINITY
Date
属性
- parse
- UTC
- now
Global(全局的)
属性
NaN,Infinity,undefined方法parseIntparseFloatisNaNisFinitedecodeURIdecodeURIComponentencodeURIencodeURIComponent