微信小程序开发总结

一、JS语法:
1、一个 = 是赋值;两个 == 是弱等于判断,不会去判断类型只要值一样就会返回true;三个 === 是强等于判断,值和类型必须都一致才会返回true;(移动端同学转前端的需注意一下,反正iOS里面没有===)

2、let、const、var声明使用:
微信小程序官方文档示例都是var,但是同事给我安装了ESLint插件,以及配置了些规范后到处飘红,var是全局变量,如果只是个方法块的临时变量用let和const即可。let和const特性大同小异,唯一的区别是const定义的对象物理指针不可修改,但是对象属性的值是可以增删改查的。所以如果不需要修改对象,一般都用const而不用let。

3、ES6模块与CommonJS模块的差异:
查帖看了很多文章,晕晕乎乎的,暂且先只管导入导出的问题吧,子类化JS文件中导出的方法或者data 需用导入时一致。
微信小程序官方文档里示例是CommonJS语法,CommonJS语法在加载页才会require加载数据,ES6语法在首页就可以拿到所有加载的数据,即使是在后面才import。

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

// 导出数值data
module.exports = data;  
//导入数值data
const data = require("./data.js");

//ES6:
//导出方法名
export default function(){
    return ""
}
//导入方法
import myFunction from "./network.js"; //这里默认导出不需要用{}
console.log(myFunction()); //默认导出一个方法

// 导出数值data
export default data;
//导入数值data
import data from "./data.js";
console.log(data); 

4、setData是异步的,不会立马更新值,如果需要同步操作,需做回调处理。

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

5、this和that对象声明,暂时我了解的是一般网络请求回调、延时回调、定时器回调this会找不到,需在回调前声明const that = this; 其他时候直接用this即可。

6、数组filter过滤筛选:

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

其中include是对字符串包含判断,比indexof好使。

7、判空三目运算可简写为:userName || "" 也就是如果userName存在并有值就显示值,否则为空。

8、int与字符串类型互转:

//int转字符串
const num = 1;
const stringNum = String(num);
console.log(stringNum);

//字符串转int
const stringNum  = "1"; 
const intNum = parseInt(stringNum);
console.log(intNum);

9、wx.showToast()与wx.hideLoading()冲突的问题:
在网络请求的时候,toast与loading可能同时存在,所以需要hide,但是两者都hide会出现wx.showLoading 应与 wx.hideLoading 配对使用。wx.showLoading 和wx.showToast只能显示一个,但是使用wx.hideToast或wx.hideloading都可以关闭提示框。
解决方法:避开在(同一层scope域) showToast前面使用wx.hideLoading(),因为showToast本身具备隐藏wx.showLoading()提示框的功能,如果使用wx.hideLoading(),后面的showToast就无法显示了。

你可能感兴趣的:(微信小程序开发总结)