Search K
Appearance
👍欢迎大家积极投稿交流👍
如果文档内容陈旧或者链接失效,请发现后及时同步,我将尽快修改
👇微信👇

Appearance
本文档详细介绍了 src/utils 目录下的工具函数,这些函数为 unibest 项目提供了各种实用的功能支持。
src/utils/
├── index.ts # 路由相关工具函数
├── lodash.ts # 通用工具函数(类似 lodash)
├── queue.ts # 任务队列工具
├── token.ts # Token 管理工具
└── README.md # 工具函数文档(本文档)提供了与页面路由相关的工具函数,支持多端(H5、小程序、APP)路由操作。
getLastPage() - 获取当前页面的实例对象currRoute() - 获取当前页面的路径和查询参数parseUrlToObj() - 将 URL 解析为路径和查询参数对象parseObjToUrl() - 将路径和查询参数对象转换为 URLgetAllPages() - 获取所有页面信息,支持按条件过滤getCurrentPageI18nKey() - 获取当前页面的国际化键值HOME_PAGE - 获取应用首页的路径getUrlParams() - 解析 URL 中的查询参数PageInstance - 页面实例类型,扩展了原始的 Page.PageInstance 类型import { currRoute, getLastPage, HOME_PAGE } from '@/utils'
// 获取当前路由信息
const routeInfo = currRoute()
console.log('当前路径:', routeInfo.path)
console.log('查询参数:', routeInfo.query)
// 获取当前页面实例
const pageInstance = getLastPage()
// 跳转到首页
uni.navigateTo({ url: HOME_PAGE })提供了类似 lodash 的通用工具函数,包括类型判断、时间格式化、对象操作等。
isArray() - 判断是否为数组类型isObject() - 判断是否为对象类型isString() - 判断是否为字符串类型isNumber() - 判断是否为数字类型isBoolean() - 判断是否为布尔类型isFunction() - 判断是否为函数类型isNull() - 判断是否为 nullisUndefined() - 判断是否为 undefinedisEmpty() - 判断是否为空trim() - 去除字符串空格,支持多种模式dateFormat() - 格式化日期时间,支持自定义格式objectSort() - 对对象按键名排序deepClone() - 深度克隆对象deepMerge() - 深度合并对象groupBy() - 按条件对数组分组set() - 修改对象指定路径的值get() - 获取对象指定路径的值isEqual() - 深度比较两个值是否相等debounce() - 防抖函数throttle() - 节流函数sleep() - 等待指定时间getTag() - 获取值的类型标签import { isObject, deepClone, debounce, dateFormat } from '@/utils/lodash'
// 类型判断
const data = { name: 'test' }
if (isObject(data)) {
console.log('是对象类型')
}
// 深度克隆
const clonedData = deepClone(data)
// 防抖处理
const debouncedFn = debounce(() => {
console.log('防抖执行')
}, 500)
// 时间格式化
const formattedDate = dateFormat('YYYY-MM-DD HH:mm:ss', new Date())
console.log('当前时间:', formattedDate)实现了一个支持并发执行的任务队列类,确保任务按顺序添加并按设定的并发数执行。
Queue - 任务队列类GlobalQueue - 全局队列单例管理import Queue, { GlobalQueue } from '@/utils/queue'
// 创建单线程队列(默认)
const queue = new Queue()
// 创建并发队列
const concurrentQueue = new Queue({ maxConcurrency: 3 })
// 添加任务
queue.push(async () => {
await new Promise(resolve => setTimeout(resolve, 1000))
return 'task completed'
}).then(result => {
console.log(result) // 'task completed'
})
// 使用全局队列
const globalQueue = GlobalQueue.getInstance()
globalQueue.push(async () => {
// 执行异步操作
})提供了与 Token 相关的存储和获取功能,基于项目的存储管理机制。
getToken() - 获取本地存储的 TokensetToken() - 设置或删除 Tokenimport { getToken, setToken } from '@/utils/token'
// 获取 Token
const token = getToken()
console.log('当前 Token:', token)
// 设置 Token
setToken('your-token-here')
// 删除 Token
setToken() // 不传参数即为删除通过使用这些工具函数,可以大大提高开发效率,减少重复代码,使项目更加规范和易于维护。