侧边栏壁纸
  • 累计撰写 5 篇文章
  • 累计创建 0 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
js

微信小程序个人JS常用方法

一米八的小胖子
2022-08-14 / 0 评论 / 0 点赞 / 2,337 阅读 / 1,655 字 / 正在检测是否收录...
/**
 * @Author: 红尘痴子
 * @description: 节流
 * @param {*} fn 方法
 * @param {*} delay 延迟时间
 */
function onThro(fn, delay = 300) {
	let valid = true
	return function () {
		if (!valid) {
			//休息时间 暂不接客
			return false
		}
		// 工作时间,执行函数并且在间隔期内把状态位设为无效
		valid = false
		setTimeout(() => {
			fn()
			valid = true
		}, delay)
	}
}
/**
 * @Author: 红尘痴子
 * @description: 防抖
 * @param {*} fn 方法
 * @param {*} delay 延迟时间
 */
function onDeb(fn, delay = 300) {
	let timer = null //借助闭包
	return function () {
		if (timer) {
			clearTimeout(timer)
		}
		timer = setTimeout(fn, delay) // 简化写法
	}
}

/**
 * @Author: 红尘痴子
 * @description: 判断是否为空
 * @param {String|Number} val 内容 空返回 true
 */
function isEmpty(val) {
	if (typeof val === 'undefined' || val == null || val == '') {
		return true
	} else {
		return false
	}
}
/**
 * @Author: 红尘痴子
 * @description: 验证手机号码格式
 * @param {String|Number} val 手机号
 */
function mobileReg(val) {
	return /^1[3-9]\d{9}$/.test(val)
}

/**
 * @Author: 红尘痴子
 * @description: 电子邮件格式验证
 * @param {String|Number} val 邮件地址
 */
function emailReg(val) {
	return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(val)
}
/**
 * @Author: 红尘痴子
 * @description: 身份证件验证
 * @param {String|Number} val 身份证号码
 */
function idReg(val) {
	return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(val)
}
/**
 * @Author: 红尘痴子
 * @description: URL格式验证
 * @param {String} val URL格式验证
 */
function urlReg(val) {
	return /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(val)
}

/**
 * @Author: 红尘痴子
 * @description: 字符中是否包含某值验证
 * @param {String} val 字符串
 * @param {String} param 字符串
 */
function containReg(val, param) {
	return val.indexOf(param) >= 0
}
/**
 * @Author: 红尘痴子
 * @description: 字符串长度是否在某个范围内验证
 * @param {String} val 字符串
 * @param {Number} param 字符串长度是否在某个范围内验证 例:" [ 2 , 5 ] "
 */
function strLengthReg(val, param) {
	return val.length >= param[0] && val.length <= param[1]
}
/**
 * @Author: 红尘痴子
 * @description: 数字是否在某个区域内验证
 * @param {Number} val 数字
 * @param {Number} param 数字是否在某个区域内验证 例:" [ 50 , 100 ] "
 */
function rangeReg(val, param) {
	return val >= param[0] && val <= param[1]
}
/**
 * @Author: 红尘痴子
 * @description: 只有数字和字母验证
 * @param {String} val 字符串
 */
function enAndNumReg(val) {
	return /^[0-9a-zA-Z]*$/g.test(val)
}
/**
 * @Author: 红尘痴子
 * @description: 无按钮提示框显示
 * @param {String} title 提示标题
 * @param {String} icon 提示icon
 */
function showToast(title, icon = 'none') {
	return new Promise(function (resolve, reject) {
		wx.showToast({
			title: title,
			icon: icon,
			mask: true,
			success(res) {
				if (res.confirm) {
					resolve()
				} else if (res.cancel) {
					reject()
				}
			}
		})
	})
}

/**
 * @Author: 红尘痴子
 * @description: 有按钮提示框显示
 * @param {string} title 提示的标题
 * @param {string} content 提示的内容
 * @param {string} confirmText 确认按钮的文字,最多 4 个字符
 * @param {boolean} showCancel 是否显示取消按钮
 * @param {string} cancelText 取消按钮的文字,最多 4 个字符
 * @param {string} confirmColor 确认按钮的文字颜色,必须是 16 进制格式的颜色字符串
 * @param {string} cancelColor 取消按钮的文字颜色,必须是 16 进制格式的颜色字符串
 */
function showModal(title = '提示', content, confirmText = '确定', showCancel = true, cancelText = '取消', confirmColor = '#576B95', cancelColor = '#000000') {
	return new Promise(function (resolve, reject) {
		wx.showModal({
			title: title,
			content: content,
			confirmText: confirmText,
			showCancel: showCancel,
			confirmColor: confirmColor,
			cancelText: cancelText,
			cancelColor: cancelColor,
			success(res) {
				if (res.confirm) {
					resolve()
				} else if (res.cancel) {
					reject()
				}
			}
		})
	})
}

/**
 * @Author: 红尘痴子
 * @description: 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
 * @param {string} url url必须为tabbar页面的路径,否则没有效果
 */
function switchTab(url) {
	wx.switchTab({
		url: url
	})
}

/**
 * @Author: 红尘痴子
 * @description: 跳转新页面页面,保留当前页面。
 * @param {string} url url必须为页面路径,否则没有效果
 */
function navigateTo(url) {
	wx.navigateTo({
		url: url
	})
}

/**
 * @Author: 红尘痴子
 * @description: 返回页面
 * @param {*} delta 返回的页面数,如果 delta 大于现有页面数,则返回到首页。
 */
function navigateBack(delta) {
	wx.navigateBack({
		delta: delta
	})
}

/**
 * @Author: 红尘痴子
 * @description: 跳转新页面页面,关闭当前页面
 * @param {string} url url必须为页面路径,否则没有效果
 */
function redirectTo(url) {
	wx.redirectTo({
		url: url
	})
}

/**
 * @Author: 红尘痴子
 * @description: 关闭所有页面,打开到应用某个页面
 * @param {string} url url必须为页面路径,否则没有效果
 */
function reLaunch(url) {
	wx.reLaunch({
		url: url
	})
}

/**
 * @Author: 红尘痴子
 * @description: 获取当前页url
 */
function getCurrentPageUrl() {
	var pages = getCurrentPages() //获取加载的页面
	var currentPage = pages[pages.length - 1] //获取当前页面的对象
	var url = currentPage.route //当前页面url
	return url
}
/**
 * @Author: 红尘痴子
 * @description: 加载等待提示,title提示,mask是否透明层bool
 * @param {*} title 提示的内容
 * @param {*} mask 提示的内容
 */
function showLoading(title, mask) {
	wx.showLoading({
		title: title,
		mask: mask
	})
}

/**
 * @Author: 红尘痴子
 * @description: 隐藏loading提示框
 */
function hideLoading() {
	wx.hideLoading()
}
/**
 * @Author: 红尘痴子
 * @description: 将页面滚动到目标位置
 * @param {*} scrollTop 滚动到页面的目标位置,单位 px
 * @param {*} duration 滚动动画的时长,单位 ms
 */
function pageScrollTo(scrollTop, duration) {
	wx.pageScrollTo({
		scrollTop: scrollTop,
		duration: duration
	})
}
/**
 * @Author: 红尘痴子
 * @description: 全屏预览图片
 * @param {*} current 当前显示图片的http链接
 * @param {*} urls 需要预览的图片http链接列表
 */
function previewImage(current, urls) {
	wx.previewImage({
		current: current,
		urls: urls
	})
}
/**
 * @Author: 红尘痴子
 * @description: 打开另一个小程序
 * @param {*} appId 要打开的小程序appId
 * @param {*} path 打开的页面路径,如果为空则打开首页
 * @param {*} extraData 需要传递给目标小程序的数据
 * @param {*} envVersion 要打开的小程序版本 develop 开发版  trial   体验版 release  正式版  正式版小程序一定会跳正式版
 */
function navigateToMiniProgram(appId, path, extraData, envVersion) {
	wx.navigateToMiniProgram({
		appId: appId,
		path: path,
		extraData: extraData,
		envVersion: envVersion
	})
}
/** 使用例子:newArray.sort(sortBy('number',false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
 * @Author: 红尘痴子
 * @description: 数组根据数组对象中的某个属性值进行排序的方法
 * @param attr 排序的属性 如number属性
 * @param rev true表示升序排列,false降序排序
 */
function compare(attr, rev) {
	//第二个参数没有传递 默认升序排列
	if (rev == undefined) {
		rev = 1
	} else {
		rev = rev ? 1 : -1
	}

	return function (a, b) {
		a = a[attr]
		b = b[attr]
		if (a < b) {
			return rev * -1
		}
		if (a > b) {
			return rev * 1
		}
		return 0
	}
}

/**
 * @Author: 红尘痴子
 * @description: 判断小程序是否为正式版
 * @param {*}
 * @return {*} true为正式版
 */
function envVersion() {
	const accountInfo = wx.getAccountInfoSync()
	if (accountInfo.miniProgram.envVersion == 'release') {
		return true
	} else {
		return false
	}
}
/**
 * @Author: 红尘痴子
 * @description: 将数据存储在本地缓存中指定的 key 中。
 * @param {*} key 本地缓存中指定的 key
 * @param {*} value 需要存储的内容。只支持原生类型、Date、及能够通过JSON.stringify序列化的对象。
 */
function stg(key, value) {
	wx.setStorageSync(key, value)
}
/**
 * @Author: 红尘痴子
 * @description: 从本地缓存中移除指定 key。
 * @param {*} key 本地缓存中指定的 key
 */
function delStg(key) {
	wx.removeStorageSync(key)
}

module.exports = {
	onThro,
	onDeb,
	isEmpty,
	mobileReg,
	emailReg,
	idReg,
	urlReg,
	containReg,
	strLengthReg,
	rangeReg,
	enAndNumReg,
	showToast,
	showModal,
	switchTab,
	navigateTo,
	navigateBack,
	redirectTo,
	reLaunch,
	showLoading,
	hideLoading,
	pageScrollTo,
	previewImage,
	navigateToMiniProgram,
	getCurrentPageUrl,
	compare,
	envVersion,
	stg,
	delStg
}

0

评论区