摘要:官方解釋與是不同的語言,有自己的語法,并不和一致。的運行環(huán)境和其他代碼是隔離的,中不能調(diào)用其他文件中定義的函數(shù),也不能調(diào)用小程序提供的。由于運行環(huán)境的差異,在設(shè)備上小程序內(nèi)的會比代碼快倍。因為,是的數(shù)據(jù)類型語法是沒有的。
wxs 官方解釋
WXS 與 JavaScript 是不同的語言,有自己的語法,并不和 JavaScript 一致。
WXS 的運行環(huán)境和其他 JavaScript 代碼是隔離的,WXS 中不能調(diào)用其他 JavaScript 文件中定義的函數(shù),也不能調(diào)用小程序提供的API。
WXS 函數(shù)不能作為組件的事件回調(diào)。
由于運行環(huán)境的差異,在 iOS 設(shè)備上小程序內(nèi)的 WXS 會比 JavaScript 代碼快 2 ~ 20 倍。在 android 設(shè)備上二者運行效率無差異
使用方法wxs 代碼可以寫在wxml 文件中 的
每個 .wxs 文件 或者
示例代碼:
首先在tools.wxs 文件中這么編寫
// /pages/tools.wxs var foo = ""hello world" from tools.wxs"; var bar = function (d) { return d; } module.exports = { FOO: foo, bar: bar, }; module.exports.msg = "some msg";
然后在 wxml 頁面中引用
{{tools.FOO}} {{tools.bar(5)}} {{tools.msg}}
頁面中會顯示
### 注意事項
wxs 跟js 相比還是有很多限制的。
比如:
它不支持 es6 語法, 所以我們平常編碼過程中使用的 解構(gòu), 箭頭函數(shù)...都是不支持的。
定義變量只能用 var 或者不寫 代表全局。因為 let ,cons是 es6 的
數(shù)據(jù)類型 wxs 語法是沒有 symbol null undefined 的。 其他的數(shù)據(jù)類型都支持。
具體都有:
number : 數(shù)值
string :字符串
boolean:布爾值
object:對象
function:函數(shù)
array : 數(shù)組
date:日期
regexp:正則
判斷wxs中的數(shù)據(jù)類型
我們知道 在 js 中判斷數(shù)據(jù)類型可以用 typeof && Object.prototype.toString.call()
typeof undefined === "undefined" // true typeof true === "bollean" // true typeof 25 === "number" // true typeof "shit" === "string" // true typeof { name: "mars"} === "object" // true // 以及 es6中的Symbol typeof Symbol() === "symbol" // true typeof function a() {} === "function" // true
以上6種數(shù)據(jù)類型都有與之同名的字符串與之對應(yīng)。 但是 mull是 不再其中 的
typeof null === "object" // true
我們知道當(dāng) 遇到 Array Date Object... 時 typeof 都會識別為 object
此時需要 Object.prototype.toString.call()
但是在wxs 中 有屬性 constructor 會返回相應(yīng)數(shù)據(jù)類型的字符串
如圖:
更多詳細介紹戳
標(biāo)簽中,只能使用定義該 的 WXML 文件中定義的
因為 wxml 的雙括號數(shù)據(jù)綁定中對表達式的支持不夠完善,因此我們可以用wxs 來增強wxml 的表達式。 也就是可以在 wxml 中寫函數(shù)。
接下來講兩個實際的應(yīng)用場景的例子
展示天氣進行數(shù)據(jù)展示
// index.wxs // 濕度判斷 humidity: function(h) { if (h) { return "濕度 " + h + "%" } return h }, // 風(fēng)的等級判斷 windLevel: function(level) { if (level === "1-2") { return "微風(fēng)" } else { return level + "級" } }, // 風(fēng)的類型 wind: function(code, level) { if (!code) { return "無風(fēng)" } if (level) { level = level.toString().split("-") level = level[level.length - 1] return code + " " + level + "級" } return code },
因為后臺返回給我們的數(shù)據(jù)數(shù)組是時間戳, 但是要處理成我們想要的時間格式,比如:2019-07-17
一般處理是遍歷數(shù)組然后對數(shù)組中的每個時間戳對象調(diào)用時間轉(zhuǎn)化函數(shù)。
但是在wxs 中 我們的轉(zhuǎn)換函數(shù)可以這么寫
// utils.wxs var formatTime = function (date) { var date = getDate(date) var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); return ([year, month, day].map(formatNumber).join("-") + " " + [hour, minute].map(formatNumber).join(":")); } var formatNumber = function (n) { n = n.toString(); return n[1] ? n : "0" + n; } module.exports = { formatTime: formatTime, }
// pages/index/index.html{{utils.formateTime(item.time)}}
最終實現(xiàn)效果如下:
原文鏈接
【完】
【作者簡介】 Mars 蘆葦科技web前端開發(fā)工程師 喜歡 看電影 ,擼鐵 還有學(xué)習(xí)。擅長 微信小程序開發(fā), 系統(tǒng)管理后臺。訪問 www.talkmnoney.cn了解更多。
作者主頁:
github
segmentfault
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105885.html
摘要:與之間通過橋協(xié)議通信包括調(diào)用指令和各種事件,涉及消息序列化跨線程通信與。一個小程序可以有多個,頁面間切換動畫比更流暢。業(yè)務(wù)無法直接控制。 showImg(http://upload-images.jianshu.io/upload_images/326507-e81e06b2cb7187e9.jpeg?imageMogr2/auto-orient/strip%7CimageView2/...
摘要:在小程序開發(fā)中,遇到的一些小坑。在小程序的文件中的里面,不支持復(fù)雜的表達式,目前支持簡單的三元運算算數(shù)運算邏輯判斷字符串運算數(shù)據(jù)路徑運算。是小程序的一套腳本語言,可以結(jié)合,一起構(gòu)建頁面。不能調(diào)用小程序提供的接口。不能作為組件的事件回調(diào)。 在小程序開發(fā)中,遇到的一些小坑。 1. 輪番圖 swiper autoplay=false 不會生效,依然會輪番。因為他會把false當(dāng)作字符串處理...
摘要:最近微信小程序異?;鸨芏嗳嗽趯W(xué)習(xí),下面帶著大家搭建下微信小程序的調(diào)試環(huán)境,并調(diào)試入門練手項目通訊錄和基礎(chǔ)即可微信推薦使用的語言,去菜鳥教程簡單學(xué)習(xí)下,,,即可,方便大家學(xué)習(xí)。 一、前言(坑爹的玩意) 項目源碼:https://github.com/saucxs/wx_... 微信小程序自從2017年,被各種看好,不過一段時間過去了還是反響平平,下半年隨著各項功能的開放,很多企業(yè)...
閱讀 2473·2021-09-28 09:36
閱讀 3615·2021-09-22 15:41
閱讀 4425·2021-09-04 16:45
閱讀 2021·2019-08-30 15:55
閱讀 2855·2019-08-30 13:49
閱讀 837·2019-08-29 16:34
閱讀 2382·2019-08-29 12:57
閱讀 1692·2019-08-26 18:42