一斤代碼解讀--小程序視圖層處理增強之(zhī)WXS
發表時(shí)間:2021-5-11
發布人(rén):融晨科技
浏覽次數:77
随着微信開發者工具v1.0.0的(de)釋出(chū),beta已久的(de)微信小程序視圖層的(de)新功能特性WXS(WeiXin Script),也(yě)正式到(dào)來(lái)了(le/liǎo)。
熟悉微信小程序開發框架的(de)開發者,肯定會對其視圖層WXML中缺失的(de)一個(gè)功能耿耿于(yú)懷,那就(jiù)是(shì)沒有辦法在(zài)視圖層對數據進行格式化處理。比如我們從後端獲取到(dào)一個(gè)包含了(le/liǎo)時(shí)間戳數據的(de)數組,然後需要(yào / yāo)在(zài)界面上(shàng)把這(zhè)些日期都格式化顯示爲(wéi / wèi)2017-01-01這(zhè)種格式的(de)日期形式,在(zài)Vue, Angular之(zhī)類的(de)前端Web框架中,一般在(zài)視圖層都提供了(le/liǎo)如filter之(zhī)類相應比較好用的(de)方案。
而(ér)在(zài)現有的(de)微信小程序代碼中?你能怎麽做?估計我們的(de)做法要(yào / yāo)麽是(shì)在(zài)Page代碼中遍曆一次數組,做一下格式化;要(yào / yāo)麽,隻能讓後端返回已經格式化好的(de)數據了(le/liǎo)。
對于(yú)追求程序代碼優雅的(de)程序員來(lái)說(shuō),這(zhè)簡直就(jiù)是(shì)心中一個(gè)巨大(dà)的(de)疙瘩!微信小程序團隊估計沒少受這(zhè)方面的(de)吐槽。因此,這(zhè)次WXS的(de)推出(chū)算是(shì)滿足了(le/liǎo)對這(zhè)種需求的(de)渴望吧。
WXS算是(shì)專供WXML調用的(de)有獨立作用域的(de)JS模塊(不(bù)是(shì)全功能的(de)JS,感覺有所限制)。舉個(gè)例子(zǐ),在(zài)這(zhè)之(zhī)前,我們是(shì)沒有辦法在(zài)WXML的(de)數據綁定括号{{}}中調用JS函數的(de),所以(yǐ)在(zài)WXML層面就(jiù)缺少了(le/liǎo)進一步做數據處理的(de)能力。
下列代碼是(shì)不(bù)工作的(de):
<!-- wxml文件 -->
<view>{{testFunc(name)}}</view>
// some-page.js
Page({
data: {
name: "一斤代碼"
},
testFunc: function (name) {
return "Hello," + name
}
})
而(ér)有了(le/liǎo)WXS之(zhī)後,我們就(jiù)可以(yǐ)實現我們預期的(de)功能了(le/liǎo):
<!-- wxml文件 -->
<view>{{myModule.testFunc(name)}}</view>
<wxs module="myModule">
function testFunc(name) {
return "Hello," + name
}
module.exports.testFunc = testFunc
</wxs>
// some-page.js
Page({
data: {
name: "一斤代碼"
}
})
WXS可以(yǐ)直接定義在(zài)wxml文件的(de)标簽體中,也(yě)可以(yǐ)寫在(zài)獨立的(de).wxs後綴名的(de)文件中,然後在(zài)wxml文件中通過的(de)形式引入。
如要(yào / yāo)要(yào / yāo)在(zài)WXS代碼中去引用其他(tā)獨立.wxs文件,可以(yǐ)通過 require()函數來(lái)引入,基本上(shàng)都是(shì)我們熟悉的(de)方式:
var formatUtil = require("./format-util.wxs");
var now = getDate()
formatUtil.formatDate(now)
所以(yǐ),WXS在(zài)功能方面,并沒有什麽複雜的(de)東西,唯一需要(yào / yāo)特别注意一些的(de),就(jiù)是(shì)它的(de)作用域了(le/liǎo):
模塊隻能在(zài)定義模塊的(de) WXML 文件中被訪問到(dào)。使用 或 時(shí), 模塊不(bù)會被引入到(dào)對應的(de) WXML 文件中。
标簽中,隻能使用定義該 的(de) WXML 文件中定義的(de) 模塊。
趕緊去試試吧,看看你現有的(de)代碼是(shì)不(bù)是(shì)有可以(yǐ)借助WXS來(lái)優化重構一下的(de)地(dì / de)方。