更新记录
2.0.3(2026-08-03)
下载此版本
2.0.2(2026-08-03)
下载此版本
2.0.1(2026-07-29)
下载此版本
查看更多
平台兼容性
uni-app(4.55)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
- |
5.0 |
√ |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
√ |
√ |
√ |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x(4.55)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| √ |
√ |
5.0 |
√ |
√ |
√ |
name: lime-shared 常用函数库
description: 专为 uni-app / uni-app x 组件开发设计的轻量级工具集,提供验证器、单位转换、DOM 查询、动画过渡、BEM 命名等辅助能力。
tags:
- shared
- 工具
- BEM
-
工具函数
plugin: lime-shared
category: SDK 工具库
dependencies: []
lime-shared 常用函数库
专为 uni-app / uni-app x 组件开发设计的轻量级工具集,提供验证器、单位转换、图片处理、Canvas、DOM 查询、动画过渡、BEM 命名等高效便捷的辅助能力,全面兼容蒸汽模式(uvue/uts)跨平台编译。
插件依赖:无
安装方法
- 在 uni-app 插件市场中搜索并导入
lime-shared
- 导入后可能需要重新编译项目
- 在代码中按需引入所需函数即可使用
::: tip 注意🔔
本插件为函数库,不提供组件标签,仅通过 import 方式按需引入工具函数。
:::
代码演示
基础使用
按需引入工具函数即可使用,无需全局注册。
// 引入单个函数
import { addUnit } from '@/uni_modules/lime-shared/addUnit'
import { classNames } from '@/uni_modules/lime-shared/classNames'
import { stringifyStyle } from '@/uni_modules/lime-shared/stringifyStyle'
// 在组件中使用
const style = stringifyStyle({ color: 'red', fontSize: '14px' })
const className = classNames('btn', { 'btn--disabled': true })
const size = addUnit(100) // '100px'
验证器使用
提供一系列类型与格式验证函数,统一返回布尔值。
import { isNumber } from '@/uni_modules/lime-shared/isNumber'
import { isEmail } from '@/uni_modules/lime-shared/isEmail'
import { isURL } from '@/uni_modules/lime-shared/isURL'
import { isIP } from '@/uni_modules/lime-shared/isIP'
isNumber(42) // true
isNumber('42') // false
isEmail('a@b.com') // true
isURL('https://a.com') // true
isIP('192.168.1.1') // true
isIP('::1', { version: 6 }) // true
BEM 命名与样式工具
配合 lime-style 提供扁平化 BEM 类名生成与样式字符串拼接。
import { createBem } from '@/uni_modules/lime-shared/bem'
import { classNames } from '@/uni_modules/lime-shared/classNames'
import { stringifyStyle } from '@/uni_modules/lime-shared/stringifyStyle'
const bem = createBem('avatar')
// 生成 BEM 类名
bem.b() // 'l-avatar'
bem.e('icon') // 'l-avatar__icon'
bem.m('small') // 'l-avatar--small'
bem.em('icon', 'round') // 'l-avatar__icon--round'
bem.m('small', true) // 'l-avatar--small'
bem.ev('icon', ['active', 'border']) // 'l-avatar__icon--active-border'
// 合并类名(自动过滤空值)
const cls = classNames(bem.b(), bem.m('disabled', isDisabled), props.lClass)
// 拼接样式字符串(自动过滤 null/undefined)
const style = stringifyStyle({ color: 'red' }, props.lStyle)
DOM 查询与节点信息
跨平台获取节点位置尺寸、查询组件实例。
import { getRect, getAllRect } from '@/uni_modules/lime-shared/getRect'
import { getCurrentInstance } from 'vue'
const instance = getCurrentInstance()
// 获取单个节点
getRect('.item', instance).then((rect) => {
console.log(rect.width, rect.height)
})
// 获取多个节点
getAllRect('.item', instance).then((rects) => {
console.log(rects.length)
})
Canvas 异步上下文
统一封装不同平台 Canvas 创建逻辑,返回一致的接口。
import { createCanvasContextAsync } from '@/uni_modules/lime-shared/createCanvasContextAsync'
const canvas = await createCanvasContextAsync('myCanvas', instance.proxy)
const ctx = canvas.renderContext
ctx.fillStyle = '#ff0000'
ctx.fillRect(0, 0, 100, 100)
canvas.flush()
const dataURL = await canvas.toDataURL('image/png', 1.0)
动画与过渡
提供 raf 动画帧、sleep 延时、Timeline/Animation 时间轴及 useTransition 过渡能力。
import { raf, cancelRaf, doubleRaf } from '@/uni_modules/lime-shared/raf'
import { sleep } from '@/uni_modules/lime-shared/sleep'
import { Timeline, Animation } from '@/uni_modules/lime-shared/animation'
// 动画帧
const id = raf(() => console.log('frame'))
cancelRaf(id)
// 延时
await sleep(300)
// 时间轴
const timeline = new Timeline()
timeline.add(new Animation(0, 100, 300, 0), 0)
timeline.start()
API 文档
以下按功能分类列出全部可用函数。除特别说明外,所有函数均支持 uni-app / uni-app x 跨平台。
验证器
| 函数名 |
路径 |
说明 |
isBase64(str) |
isBase64 |
判断字符串是否为 Base64 编码 |
isDataURI(str) |
isBase64 |
判断字符串是否为 Base64 编码的 data URI |
isBoolean(value) |
isBoolean |
严格判断值是否为布尔值 |
isByteLength(str, options) |
isByteLength |
验证字符串字节长度是否在范围内 |
isDate(input, options) |
isDate |
验证字符串或 Date 是否为有效日期 |
isDef(value) |
isDef |
检查值是否已定义(非 undefined/null) |
isEmail(email) |
isEmail |
验证电子邮件地址格式 |
isEmpty(value) |
isEmpty |
判断值是否为空(null/空串/空数组/空对象) |
isFunction(val) |
isFunction |
检查值是否为函数类型 |
isIP(ip, options) |
isIP |
验证 IP 地址(支持 IPv4/IPv6) |
isNumber(value) |
isNumber |
检查值是否为数字类型 |
isNumeric(value) |
isNumeric |
检查值是否为数字或可解析为数字的字符串 |
isObject(val) |
isObject |
检查值是否为对象类型 |
isPromise(val) |
isPromise |
检查值是否为 Promise |
isRegExp(obj) |
isRegExp |
检测值是否为正则表达式对象 |
isString(str) |
isString |
检查值是否为字符串类型 |
isURL(url, options) |
isURL |
综合验证 URL(支持协议白名单、TLD、端口等) |
isValidDomain(str, options) |
isValidDomain |
验证字符串是否为合法域名 |
单位转换
| 函数名 |
路径 |
说明 |
addUnit(value, unit='px') |
addUnit |
给值添加单位,已含单位则原样返回 |
unitConvert(value, base=0) |
unitConvert |
将 rpx/px/% 字符串转换为像素数字 |
parseUnit(value, base=0) |
unitConvert |
包装 unitConvert,NaN 返回 null |
toNumber(val) |
toNumber |
将字符串转换为数字,无法转换返回原值或 null |
图片处理
| 函数名 |
路径 |
说明 |
arrayBufferToFile(buffer, name, format) |
arrayBufferToFile |
将 ArrayBuffer 转为临时文件路径 |
base64ToArrayBuffer(base64) |
base64ToArrayBuffer |
从 data URI 解析 base64 并转为 ArrayBuffer |
base64ToPath(base64, filename) |
base64ToPath |
将 base64 数据转为临时文件路径 |
pathToBase64(path) |
pathToBase64 |
将文件路径转为 base64 data URI |
exif |
exif |
图片 EXIF 信息读取对象(不支持 uni-app x App) |
createImage(canvas) |
createImage |
创建用于 canvas 的 Image 对象 |
Canvas
| 函数名 |
路径 |
说明 |
canIUseCanvas2d() |
canIUseCanvas2d |
判断当前环境是否支持 canvas 2d |
createCanvas(canvasId, component) |
createCanvas |
创建 canvas 上下文 |
createCanvasContextAsync(canvasId, component) |
createCanvasContextAsync |
异步创建 canvas 上下文,返回统一接口 |
页面与 DOM
| 函数名 |
路径 |
说明 |
getCurrentPage() |
getCurrentPage |
返回当前页面实例 |
getRect(selector, context, node) |
getRect |
获取单个节点位置尺寸信息 |
getAllRect(selector, context, node) |
getRect |
获取所有匹配节点位置尺寸信息 |
getViewportScrollInfo() |
getRect |
获取视口滚动条位置信息 |
getScrollIntoViewValue(...) |
getRect |
计算元素滚动到可视区域的目标位置 |
getDeviceInfo() |
getDeviceInfo |
获取设备信息 |
getWindowInfo() |
getWindowInfo |
获取窗口信息 |
selectComponent(selector) |
selectComponent |
链式查询器,查找组件实例 |
selectAllComponent(selector, options) |
selectAllComponent |
批量选择组件 |
selectElement(selector) |
selectElement |
链式 DOM 查询器(uni-app x 专用) |
findClosestElementWithStyle(el, prop) |
dom |
向上查找具有指定 style 的祖先元素 |
动画与延时
| 函数名 |
路径 |
说明 |
sleep(delay=300) |
sleep |
延时指定毫秒后 resolve 的 Promise |
raf(fn) |
raf |
请求动画帧 |
cancelRaf(id) |
raf |
取消动画帧 |
doubleRaf(fn) |
raf |
双倍动画帧 |
createAnimation(options) |
createAnimation |
创建动画对象(NVUE 链式调用) |
Timeline |
animation |
动画时间轴类 |
Animation |
animation |
单个动画对象类 |
useTransition(source, options) |
animation/useTransition |
数值过渡动画 composable |
数学与数字
| 函数名 |
路径 |
说明 |
clamp(val, min, max) |
clamp |
将值限制在范围内 |
closest(arr, target) |
closest |
在数组中找到最接近目标数字的元素 |
floatAdd(num1, num2) |
floatAdd |
浮点数加法(精度修复) |
floatDiv(num1, num2) |
floatDiv |
浮点数除法(精度修复) |
floatMul(num1, num2) |
floatMul |
浮点数乘法(精度修复) |
floatSub(num1, num2) |
floatSub |
浮点数减法(精度修复) |
random(min, max, fixed=0) |
random |
生成指定范围内的随机数 |
range(start, end, step=1, fromRight=false) |
range |
生成数字范围数组 |
字符串与数组
| 函数名 |
路径 |
说明 |
addSeparator(num, separator=',', digit=3) |
addSeparator |
每隔 n 位数字添加分隔符 |
arrayEqual(arr1, arr2) |
arrayEqual |
浅比较两个数组是否相等 |
assignAtIndex(arr, index, value) |
assignAtIndex |
安全在数组指定索引赋值 |
camelCase(str, isPascalCase=false) |
camelCase |
转换为 camelCase 或 PascalCase |
characterLimit(type, char, max) |
characterLimit |
按字符/字节计算长度并截断 |
fillArray(length, value) |
fillArray |
生成指定长度并用指定值填充的数组 |
fillZero(number, length=2) |
fillZero |
在数字前补零至指定长度 |
findLastIndex(array, predicate) |
findLastIndex |
兼容版 findLastIndex polyfill |
kebabCase(str, separator='-') |
kebabCase |
转换为指定连接符命名 |
shuffle(arr) |
shuffle |
Fisher-Yates 算法随机打乱数组 |
toArray(item) |
toArray |
将单个元素包装为数组 |
toBoolean(value) |
toBoolean |
将值转为布尔 |
对象工具
| 函数名 |
路径 |
说明 |
cloneDeep(obj) |
cloneDeep |
深度克隆对象/数组 |
coalesce(...values) |
coalesce |
返回第一个非空值(保留 0/false) |
hasOwn(obj, key) |
hasOwn |
检查对象是否具有指定属性 |
merge(obj, defaults) |
merge |
深度合并,用 defaults 填充 obj 的空值 |
BEM 命名与样式
| 函数名 |
路径 |
说明 |
createBem |
bem |
默认配置 BEM 工厂函数(namespace=l) |
createBemStruct(config) |
bem |
自定义配置 BEM 工厂函数 |
Bem |
bem |
BEM 类生成器类 |
classNames(...args) |
classNames |
拼接类名字符串,自动过滤空值 |
parseStyle(css) |
parseStyle |
将 CSS 字符串转为样式对象 |
stringifyStyle(...args) |
stringifyStyle |
拼接样式字符串,自动过滤空值 |
toCssVars(obj, prefix='--l-') |
stringifyStyle |
将对象转换为 CSS 自定义属性字符串 |
平台与杂项
| 函数名 |
路径 |
说明 |
getLocalFilePath(path) |
getLocalFilePath |
将路径转换为本地绝对路径 |
getPlatform() |
platform |
返回当前平台的根对象(wx/my/uni 等) |
obj2url(data, isPrefix=false) |
obj2url |
将对象转换为 URL 查询字符串 |
guid(len=32) |
guid |
生成指定长度的伪随机字符串 |
uniqid(prefix='lime') |
uniqid |
生成带前缀的唯一 ID |
isBrowser |
isBrowser |
是否为 Web 环境常量 |
vue |
vue |
Vue API 重导出(VUE3/VUE2 兼容) |
省市区数据
| 函数名 |
路径 |
说明 |
areaList |
areaData |
中国省市区原始数据(province/city/county) |
useCascaderAreaData() |
areaData |
转换为级联选择器树形结构 |
节流防抖
| 函数名 |
路径 |
说明 |
debounce(fn, wait=300) |
debounce |
防抖函数 |
throttle(func, wait, options) |
throttle |
节流函数(支持 leading/trailing) |
Vue2 使用说明
插件在 Vue2 项目中通过 @vue/composition-api 提供 computed、ref、watch 等组合式 API 能力,需按以下方式配置。
关键配置代码(在 main.js 中添加):
// vue2
import Vue from 'vue'
import VueCompositionAPI from '@vue/composition-api'
Vue.use(VueCompositionAPI)
快速预览
本插件为函数库,不提供可视化演示组件。可直接在任意 uni-app 项目中按需引入函数进行使用。
插件标签说明
| 标签类型 |
示例 |
说明 |
| 函数库 |
import { ... } from '@/uni_modules/lime-shared/...' |
仅通过 import 方式按需引入,无组件标签 |
文档链接
📚 函数库详细文档请访问以下站点:
注意事项
- 本插件为函数库,所有函数均按需引入,无需全局注册
exif 图片信息读取不支持 uni-app x App 环境
createAnimation 在 uni-app x(uvue)环境下请使用 lime-animateIt 插件
getLocalFilePath 在 uni-app x(uvue)环境下重新导出为 getResourcePath(来自 lime-file-utils)
- 部分函数在不同平台有不同实现,但导出名称与签名保持一致,无需关心平台差异
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
| 支付宝赞助 |
微信赞助 |
 |
 |