sqb-util
Version:
sqb-util,是送气宝系列的共用工具套
121 lines (106 loc) • 3.44 kB
JavaScript
/**
* 自动导入指定目录的上下文
* @param {Object} context require.context
*/
export function importAll(context) {
const map = {}
for (const key of context.keys()) {
// 获取文件名作为key
const keyArr = key.split('/')
keyArr.shift() // 移除.
map[keyArr.join('.').replace(/\.js$/g, '')] = context(key)
}
return map
}
/**
* 将对象css样式转为字符串
* @param {Object} style
*/
export function getStyles(style) {
let sty = ''
if (typeof style === 'string') {
sty += style + ';'
} else {
Object.keys(style).forEach((key) => {
sty += `${key}:${style[key]};`
})
}
return sty
}
/**
* 获取当前页面的参数
*/
export function getPageParam() {
// 获取当前小程序的页面栈
const pages = getCurrentPages()
// 数组中索引最大的页面--当前页面
const currentPage = pages[pages.length - 1]
// 返回当前页面中的 options
return parseParam(currentPage.options)
}
/*
* 解析参数,可接收小程序码参数与url参数,并以统一格式返回
* @param option onLoad的回调参数
*/
export function parseParam(option) {
let result = {}
if (option.scene) {
result = parseSceneParam(option.scene)
} else {
for (let key in option) {
result[key] = decodeURIComponent(option[key])
}
}
return result
}
/**
* @description 将小程序码的scene转换成键值对的对象
* @param { String } scene 通过小程序码进来的场景scene值
*/
export function parseSceneParam(scene) {
let obj = {}
let param = decodeURIComponent(scene).split('&')
param.forEach(item => {
let key = item.split('=')[0]
let value = item.split('=')[1]
obj[key] = value
})
return obj
}
//hex -> rgb
export function hexToRgb(hex) {
return 'rgb(' + parseInt('0x' + hex.slice(1, 3)) + ',' + parseInt('0x' + hex.slice(3, 5))
+ ',' + parseInt('0x' + hex.slice(5, 7)) + ')';
}
//hex -> rgba
export function hexToRgba(hex, opacity) {
return 'rgba(' + parseInt('0x' + hex.slice(1, 3)) + ',' + parseInt('0x' + hex.slice(3, 5)) + ','
+ parseInt('0x' + hex.slice(5, 7)) + ',' + opacity + ')';
}
export function getUniqueId(prefix = '') {
const n = `${(parseInt(Math.random() * 10000) + new Date().getTime())}`
return `${prefix}${n}`
}
/**
* 将字符串按照指定间隔添加分隔符
* @param {string} str - 待处理的字符串
* @param {string} separator - 分隔符,默认为横线 '-'
* @param {number} interval - 分隔的间隔,默认为 4
* @returns {string} - 添加分隔符后的字符串
*/
export function addSeparators(str, separator, interval) {
// 如果未提供分隔符,则默认使用横线
separator = separator || '-';
// 如果未提供间隔,默认为4
interval = interval || 4;
// 使用正则表达式匹配每指定间隔位字符
var regex = new RegExp('.{1,' + interval + '}', 'g');
// 将字符串拆分为每指定间隔位的数组
var parts = str.match(regex);
// 如果没有拆分成指定间隔位的部分,直接返回原始字符串
if (!parts) {
return str;
}
// 将拆分的部分用分隔符连接起来
return parts.join(separator);
}