## 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
- 課程規劃
- 課程概述
- 特性介紹
- 組件介紹-基礎組件
- 組件介紹-表單組件
- 組件介紹-數據展示組件
- 組件介紹-提示組件
- 組件介紹-導航組件
- 組件介紹-其他組件
- 綜合案例