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