UNPKG

sqb-util

Version:

sqb-util,是送气宝系列的共用工具套

121 lines (106 loc) 3.44 kB
/** * 自动导入指定目录的上下文 * @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); }