我們?cè)陂_(kāi)發(fā)微信小程序的時(shí)候,會(huì)用到自定義的函數(shù)功能,那么我們?nèi)绾卧谛〕绦蛑袑?xiě)這些JS,又如何在WXML中調(diào)用它們呢 ?換句話(huà)說(shuō)在微信小程序{{}}中直接調(diào)用自定義的函數(shù)
詳細(xì)見(jiàn)微信小程序的API:https://developers.weixin.qq.com/miniprogram/dev/reference/wxs/01wxs-module.html
本文以一個(gè)小的例子予以說(shuō)明:
一、創(chuàng)建公共的JS文件
本著代碼的規(guī)范化和項(xiàng)目的工程化,小程序中公共JS文件一般創(chuàng)建在utils目錄下,這樣,我們就可以在每個(gè)模塊頁(yè)面里調(diào)用它。比如:這里創(chuàng)建了一個(gè)公共文件:time.wxs(PS:微信小程序的公共文件一定要是wxs后綴),如圖所示:

在utils公共文件目錄下新建wxs文件
二、編寫(xiě)相關(guān)應(yīng)用函數(shù)
打開(kāi)time.wxs文件,然后在里面編寫(xiě)函數(shù)
/**
* 時(shí)間格式化:年月日是分秒
* @param {*} timestamp :時(shí)間戳13位
* @param {*} type:需要轉(zhuǎn)化后的時(shí)間格式
* eg. cn: 2020年3月02日 ; en:2020.03.02
*/
var timeFormat = {
timestampToTime: function (timestamp, type) {
if (timestamp && type === 'cn') {
var date = getDate(timestamp);//時(shí)間戳為10位需*1000,時(shí)間戳為13位的話(huà)不需乘1000
var Y = date.getFullYear() + '年';
var M = (date.getMonth() + 1 < 10 ? (date.getMonth() + 1) : date.getMonth() + 1) + '月';
var D = date.getDate() + '日';
var h = date.getHours() < 10 ? '0' + (date.getHours()) + ':' : date.getHours() + ':';
var m = date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes();
var s = date.getSeconds();
return M + D + h + m;
}
if (timestamp && type === 'en') {
var date = getDate(timestamp);//時(shí)間戳為10位需*1000,時(shí)間戳為13位的話(huà)不需乘1000
var Y = date.getFullYear() + '.';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '.';
var D = date.getDate() + '';
var h = date.getHours() < 10 ? '0' + (date.getHours()) + ':' : date.getHours() + ':';
var m = date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes();
var s = date.getSeconds();
return Y + M + D;
}
}
};
// 導(dǎo)出對(duì)外暴露的屬性
module.exports = {
timestampToTime: timeFormat.timestampToTime
}
說(shuō)明:
1 定義一個(gè)整體變量,以var開(kāi)頭,
var 變量 = {};*
2、編寫(xiě)函數(shù)。函數(shù)格式為:
函數(shù)名:**function**(**參數(shù)**) **{**},具體參見(jiàn)上面的例子*
3、通過(guò)module.exports引用函數(shù),寫(xiě)法如下:
module.exports={被使用的函數(shù)名:變量.具體函數(shù)}*
其他說(shuō)明:
WXS 中不能調(diào)用 javascript 中定義的函數(shù)或者變量,也不能調(diào)用小程序提供的API,他的運(yùn)行環(huán)境和 javascript 是隔離的。
只能使用 var 來(lái)定義變量,表現(xiàn)形式和 javascript 一樣,會(huì)有變量提升。
所以在上例中不能使用 new Date() ( var date =new Date(timestamp);) 應(yīng)該使用getDate(),即獲取當(dāng)前日期使用getDate(),使用var聲明變量
三、如何試用
1、在使用的頁(yè)面頭部引入文件,引入方式是:
<wxs module="time" src="../../utils/time.wxs"></wxs>
說(shuō)明:module="文件名",我在utils文件夾里定義的文件名是time,所以這里的名稱(chēng)與之對(duì)應(yīng)
2、函數(shù)調(diào)用
<view class="msg">{{time.timestampToTime(item.endTime, "cn")}}我在這里執(zhí)行自定義函數(shù)</view>