微信小程序開(kāi)發(fā)總結(jié)

一、JS語(yǔ)法:
1、一個(gè) = 是賦值;兩個(gè) == 是弱等于判斷,不會(huì)去判斷類(lèi)型只要值一樣就會(huì)返回true;三個(gè) === 是強(qiáng)等于判斷,值和類(lèi)型必須都一致才會(huì)返回true;(移動(dòng)端同學(xué)轉(zhuǎn)前端的需注意一下,反正iOS里面沒(méi)有===)

2、let、const、var聲明使用:
微信小程序官方文檔示例都是var,但是同事給我安裝了ESLint插件,以及配置了些規(guī)范后到處飄紅,var是全局變量,如果只是個(gè)方法塊的臨時(shí)變量用let和const即可。let和const特性大同小異,唯一的區(qū)別是const定義的對(duì)象物理指針不可修改,但是對(duì)象屬性的值是可以增刪改查的。所以如果不需要修改對(duì)象,一般都用const而不用let。

3、ES6模塊與CommonJS模塊的差異:
查帖看了很多文章,暈暈乎乎的,暫且先只管導(dǎo)入導(dǎo)出的問(wèn)題吧,子類(lèi)化JS文件中導(dǎo)出的方法或者data 需用導(dǎo)入時(shí)一致。
微信小程序官方文檔里示例是CommonJS語(yǔ)法,CommonJS語(yǔ)法在加載頁(yè)才會(huì)require加載數(shù)據(jù),ES6語(yǔ)法在首頁(yè)就可以拿到所有加載的數(shù)據(jù),即使是在后面才import。

//CommonJS:
//導(dǎo)出方法
module.exports.postRequest = postRequest;
//導(dǎo)入方法
const common = require("./network.js");
common.postRequest();

// 導(dǎo)出數(shù)值data
module.exports = data;  
//導(dǎo)入數(shù)值data
const data = require("./data.js");

//ES6:
//導(dǎo)出方法名
export default function(){
    return ""
}
//導(dǎo)入方法
import myFunction from "./network.js"; //這里默認(rèn)導(dǎo)出不需要用{}
console.log(myFunction()); //默認(rèn)導(dǎo)出一個(gè)方法

// 導(dǎo)出數(shù)值data
export default data;
//導(dǎo)入數(shù)值data
import data from "./data.js";
console.log(data); 

4、setData是異步的,不會(huì)立馬更新值,如果需要同步操作,需做回調(diào)處理。

const name = "lizzy";
this.setData(
    {
        name: name
    },
    () => {
        //需要執(zhí)行的同步操作
    }
);

5、this和that對(duì)象聲明,暫時(shí)我了解的是一般網(wǎng)絡(luò)請(qǐng)求回調(diào)、延時(shí)回調(diào)、定時(shí)器回調(diào)this會(huì)找不到,需在回調(diào)前聲明const that = this; 其他時(shí)候直接用this即可。

6、數(shù)組filter過(guò)濾篩選:

let exeData = .filter(function(item) {
  return item.quesType.includes("5");
});

其中include是對(duì)字符串包含判斷,比indexof好使。

7、判空三目運(yùn)算可簡(jiǎn)寫(xiě)為:userName || "" 也就是如果userName存在并有值就顯示值,否則為空。

8、int與字符串類(lèi)型互轉(zhuǎn):

//int轉(zhuǎn)字符串
const num = 1;
const stringNum = String(num);
console.log(stringNum);

//字符串轉(zhuǎn)int
const stringNum  = "1"; 
const intNum = parseInt(stringNum);
console.log(intNum);

9、wx.showToast()與wx.hideLoading()沖突的問(wèn)題:
在網(wǎng)絡(luò)請(qǐng)求的時(shí)候,toast與loading可能同時(shí)存在,所以需要hide,但是兩者都hide會(huì)出現(xiàn)wx.showLoading 應(yīng)與 wx.hideLoading 配對(duì)使用。wx.showLoading 和wx.showToast只能顯示一個(gè),但是使用wx.hideToast或wx.hideloading都可以關(guān)閉提示框。
解決方法:避開(kāi)在(同一層scope域) showToast前面使用wx.hideLoading(),因?yàn)閟howToast本身具備隱藏wx.showLoading()提示框的功能,如果使用wx.hideLoading(),后面的showToast就無(wú)法顯示了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容