2.4.2 WXS
WXS(WeiXin Script)是小程序的一套腳本語(yǔ)言毯焕,結(jié)合 WXML,可以構(gòu)建出頁(yè)面的結(jié)構(gòu)。
注意
wxs 不依賴于運(yùn)行時(shí)的基礎(chǔ)庫(kù)版本望伦,可以在所有版本的小程序中運(yùn)行。
wxs 與 javascript 是不同的語(yǔ)言煎殷,有自己的語(yǔ)法屯伞,并不和 javascript 一致。
wxs 的運(yùn)行環(huán)境和其他 javascript 代碼是隔離的豪直,wxs 中不能調(diào)用其他 javascript 文件中定義的函數(shù)劣摇,也不能調(diào)用小程序提供的API。
wxs 函數(shù)不能作為組件的事件回調(diào)弓乙。
由于運(yùn)行環(huán)境的差異末融,在 iOS 設(shè)備上小程序內(nèi)的 wxs 會(huì)比 javascript 代碼快 2 ~ 20 倍。在 android 設(shè)備上二者運(yùn)行效率無(wú)差異暇韧。
2.4.2.1 WXS 模塊
WXS 代碼可以編寫(xiě)在 wxml 文件中的 <wxs>
標(biāo)簽內(nèi)勾习,或以 .wxs
為后綴名的文件內(nèi)。
2.4.2.1.1 模塊
每一個(gè) .wxs
文件和 <wxs>
標(biāo)簽都是一個(gè)單獨(dú)的模塊懈玻。
每個(gè)模塊都有自己獨(dú)立的作用域巧婶。即在一個(gè)模塊里面定義的變量與函數(shù),默認(rèn)為私有的涂乌,對(duì)其他模塊不可見(jiàn)艺栈。
一個(gè)模塊要想對(duì)外暴露其內(nèi)部的私有變量與函數(shù),只能通過(guò) module.exports
實(shí)現(xiàn)湾盒。
2.4.2.1.2 .wxs 文件
在微信開(kāi)發(fā)者工具里面湿右,右鍵可以直接創(chuàng)建 .wxs
文件,在其中直接編寫(xiě) WXS 腳本罚勾。
示例代碼:
// /pages/comm.wxs
var foo = "'hello world' from comm.wxs";
var bar = function(d) {
return d;
}
module.exports = {
foo: foo,
bar: bar
};
上述例子在 /pages/comm.wxs 的文件里面編寫(xiě)了 WXS 代碼毅人。該 .wxs
文件可以被其他的 .wxs
文件 或 WXML 中的 <wxs>
標(biāo)簽引用漾唉。
2.4.2.1.3 module 對(duì)象
每個(gè) wxs
模塊均有一個(gè)內(nèi)置的 module
對(duì)象。
1堰塌、屬性
exports
: 通過(guò)該屬性赵刑,可以對(duì)外共享本模塊的私有變量與函數(shù)。
2.4.2.1.4 require 函數(shù)
在 .wxs
模塊中引用其他 wxs
文件模塊场刑,可以使用 require
函數(shù)般此。
引用的時(shí)候,要注意如下幾點(diǎn):
1牵现、只能引用 .wxs
文件模塊铐懊,且必須使用相對(duì)路徑。
2瞎疼、wxs
模塊均為單例科乎,wxs
模塊在第一次被引用時(shí),會(huì)自動(dòng)初始化為單例對(duì)象贼急。多個(gè)頁(yè)面茅茂,多個(gè)地方,多次引用太抓,使用的都是同一個(gè) wxs
模塊對(duì)象空闲。
3、如果一個(gè) wxs
模塊在定義之后走敌,一直沒(méi)有被引用碴倾,則該模塊不會(huì)被解析與運(yùn)行。
src 對(duì)應(yīng)wxml 對(duì)wxs 模塊的引用掉丽;require 滿足其他wxs 文件對(duì)wxs 文件模塊的引用跌榔。
2.4.2.1.5 <wxs> 標(biāo)簽
1、module 屬性
module 屬性是當(dāng)前 <wxs>
標(biāo)簽的模塊名捶障。在單個(gè) wxml 文件內(nèi)僧须,建議其值唯一。有重復(fù)模塊名則按照先后順序覆蓋(后者覆蓋前者)残邀。不同文件之間的 wxs 模塊名不會(huì)相互覆蓋皆辽。
module 屬性值的命名必須符合下面兩個(gè)規(guī)則:
- 首字符必須是:字母(a-zA-Z)柑蛇,下劃線(_)
- 剩余字符可以是:字母(a-zA-Z)芥挣,下劃線(_), 數(shù)字(0-9)
2耻台、src 屬性
src 屬性可以用來(lái)引用其他的 wxs 文件模塊空免。
引用的時(shí)候,要注意如下幾點(diǎn):
只能引用
.wxs
文件模塊盆耽,且必須使用相對(duì)路徑蹋砚。wxs
模塊均為單例扼菠,wxs
模塊在第一次被引用時(shí),會(huì)自動(dòng)初始化為單例對(duì)象坝咐。多個(gè)頁(yè)面循榆,多個(gè)地方,多次引用墨坚,使用的都是同一個(gè)wxs
模塊對(duì)象秧饮。如果一個(gè)
wxs
模塊在定義之后,一直沒(méi)有被引用泽篮,則該模塊不會(huì)被解析與運(yùn)行盗尸。
3、注意
<wxs>
模塊只能在定義模塊的 WXML 文件中被訪問(wèn)到帽撑。使用<include>
或<import>
時(shí)泼各,<wxs>
模塊不會(huì)被引入到對(duì)應(yīng)的 WXML 文件中。如需引用亏拉,則需要將<wxs>
模塊的代碼放在單獨(dú)的.wxs
文件模塊扣蜻,然后使用使用src
引用。<template>
標(biāo)簽中及塘,只能使用定義該<template>
的 WXML 文件中定義的<wxs>
模塊弱贼。
2.4.2.2 變量
2.4.2.2.1 概念
1、WXS 中的變量均為值的引用磷蛹。
2吮旅、沒(méi)有聲明的變量直接賦值使用,會(huì)被定義為全局變量味咳。
3庇勃、如果只聲明變量而不賦值,則默認(rèn)值為 undefined槽驶。
4责嚷、var表現(xiàn)與javascript一致,會(huì)有變量提升掂铐。
2.4.2.2.2 變量名
變量命名必須符合下面兩個(gè)規(guī)則:
- 首字符必須是:字母(a-zA-Z)罕拂,下劃線(_)
- 剩余字符可以是:字母(a-zA-Z),下劃線(_)全陨, 數(shù)字(0-9)
2.4.2.3 注釋
WXS 主要有 3 種注釋的方法爆班。
示例代碼:
<!-- wxml -->
<wxs module="sample">
// 方法一:?jiǎn)涡凶⑨?
/*
方法二:多行注釋
*/
/*
方法三:結(jié)尾注釋。即從 /* 開(kāi)始往后的所有 WXS 代碼均被注釋
var a = 1;
var b = 2;
var c = "fake";
</wxs>
上述例子中辱姨,所有 WXS 代碼均被注釋掉了柿菩。
方法三 和 方法二 的唯一區(qū)別是,沒(méi)有 */ 結(jié)束符雨涛。
2.4.2.4 運(yùn)算符
- 基本運(yùn)算符
- 一元運(yùn)算符
- 位運(yùn)算符
- 比較運(yùn)算符
- 等值運(yùn)算符
- 賦值運(yùn)算符
- 二元邏輯運(yùn)算符
- 其他運(yùn)算符
2.4.2.5 語(yǔ)句
- if 語(yǔ)句
- switch 語(yǔ)句
- for 語(yǔ)句
- while 語(yǔ)句
參考:語(yǔ)句
2.4.2.6 數(shù)據(jù)類(lèi)型
WXS 語(yǔ)言目前共有以下幾種數(shù)據(jù)類(lèi)型:
- number : 數(shù)值
- string :字符串
- boolean:布爾值
- object:對(duì)象
- function:函數(shù)
- array : 數(shù)組
- date:日期
- regexp:正則
2.4.2.7 基礎(chǔ)類(lèi)庫(kù)
參考資料:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/