1. 程式人生 > >微信小程式API互動的自定義封裝

微信小程式API互動的自定義封裝

[TOC](目錄) # 1,起因 *** 哪天,正在螞蟻森林瘋狂偷能量的我被boss叫過去,告知我司要做一個線上直播公開課功能的微信小程式,博主第一次寫小程式,複習了下文件,看了看騰訊雲直播sdk,開工了。 寫著寫著就發現不對勁了, 這裡面`wx.showToast`,`wx.showModal`,這一類的呼叫太多了,每次都寫一遍太特麼麻煩了,就拿`wx.showToast`做例子,產品要求是`duration`為2000ms,預設值是1500ms,且有時候不需要icon圖示,有時候又需要,所以每次都要如下呼叫 ```javascript wx.showToast({ title: '建立成功', icon: 'none', duration: 2000 }) ``` 不但麻煩,而且程式碼看著很糟糕,所以博主決定二次封裝一下。 # 2,優化成果 *** 經過博主封裝後,程式碼如下 ```javascript // wx.showToast優化前呼叫 wx.showToast({ title: '建立成功', icon: 'none', duration: 2000 }); // wx.showToast優化後呼叫 FN.Toast("建立成功"); ``` ```javascript // wx.showModal優化前呼叫 wx.showModal({ title: '溫馨提示', content: '確認更換賬號嗎?', success (res) { if (res.confirm) { console.log('使用者點選確定') } else if (res.cancel) { console.log('使用者點選取消') } } }); // wx.showModal優化後呼叫 FN.Confirm("確認更換賬號嗎?") .then(res => { console.log('使用者點選確定') }) .catch(error => { console.log('使用者點選取消') }); ``` # 3,實現思路 *** 定義一個公共的`public.js`,在裡面寫上常用的方法,用一個常量承載,然後通過`module.exports`暴露出去,在需要的地方接收,而其中比如`wx.showModal`,`wx.login`,這些需要回調來處理的方法,使用了`Promise`實現了鏈式呼叫。 # 4,完整程式碼 *** 檔名:`public.js` ```javascript const publicFn = { /** * Loading轉圈圈 * @param {nunber} mask - 不傳預設不顯示透明蒙層 * @param {string} msg - 提示語 預設值:載入中 */ Loading (mask, msg){ let Mask = mask ? true : false; let Msg = msg ? msg : "載入中" wx.showLoading({ title: Msg, mask: Mask }) }, /** * Loading取消轉圈圈 */ LoadingOff (){ wx.hideLoading(); }, /** * Toast提示 * @param {string} msg - 提示內容 * @param {string} icon - icon圖示 成功success 載入中loading 無樣式none * @param {number} time - 提示存在時長 */ Toast (msg, icon, time){ let Icon = icon === 1 ? "success" : "none"; wx.showToast({ title: msg, icon: Icon, duration: time || 2000 }) }, /** * 帶確認的提示框 * @param {string} msg - 提示內容 */ Alert (msg){ return new Promise((resolve, reject) => { wx.showModal({ title: '溫馨提示', content: msg, showCancel:false, confirmColor:"#007AFF", success (res) { // 此彈窗只有確認鍵,沒有取消鍵,所以只寫了resolve沒有reject resolve(res); } }) }) }, /** * 帶確認和取消的提示框 * @param {string} msg - 提示內容 */ Confirm (msg){ return new Promise((resolve, reject) => { wx.showModal({ title: '溫馨提示', content: msg, cancelColor:"#000000", confirmColor:"#007AFF", success (res) { if (res.confirm) { resolve(res); }else if (res.cancel) { reject(res) } } }) }) }, /** * 微信登陸 wx.login */ wxLogin () { return new Promise((resolve, reject) => { wx.login({ success (res) { if (res.code) { resolve(res.code) } else { reject(res.errMsg); } } }) }); } } module.exports = publicFn; ``` **使用方法:在你需要呼叫的地方的js檔案頂部引入** ```javascript //路徑根據自己專案檔案位置改變 const FN = require('../publicFn/public'); ``` **呼叫語法參考目錄2** *** **如果看了覺得有幫助的,我是@鵬多多,歡迎 點贊 關注 評論; END** ==往期文章== + [微信小程式實現上傳多張本地圖片到伺服器和圖片預覽](https://www.cnblogs.com/-pdd/p/14120442.html) + [簡單的JS+CSS實現網頁自定義換膚](https://www.cnblogs.com/-pdd/p/13901765.html) ==個人主頁== + [CSDN](https://blog.csdn.net/pdd11997110103?spm=1010.2135.3001.5421) + [GitHub](https://github.com/pdd11997110103) + [簡書](https://www.jianshu.com/u/b7a8536bff06) + [部落格園](https://www.cnblogs.com/-pdd/) + [掘金](https://juejin.cn/user/747323639737191)