更新记录

1.0.1(2026-06-01) 下载此版本

app-core-utils (UniApp 核心基础工具库)

app-core-utils 企业级 UniApp 项目的高度复用基础能力插件。它将日常开发中最常用的 UIRouterStorage 进行了深度封装,解决了 UniApp 原生 API 在复杂业务场景下,如“重复路由跳转”、“跨端 UI 表现不一致”、“大数据页面传参”以及“本地存储极易被误删”等问题。

1.0.0(2026-06-01) 下载此版本

app-core-utils (UniApp 核心基础工具库)

app-core-utils 企业级 UniApp 项目的高度复用、与业务零耦合的基础能力插件。它将日常开发中最常用的 UIRouterStorage 进行了深度封装,解决了 UniApp 原生 API 在复杂业务场景下的痛点,如“重复路由跳转”、“跨端 UI 表现不一致”、“大数据页面传参”以及“本地存储极易被误删”等问题。


平台兼容性

uni-app(5.11)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
4.4 12
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟

其他

多语言 暗黑模式 宽屏模式
× ×

app-core-utils (UniApp 核心基础工具库)

app-core-utils 企业级 UniApp 项目的高度复用基础能力插件。它将日常开发中最常用的 UIRouterStorage 进行了深度封装,解决了 UniApp 原生 API 在复杂业务场景下,如“重复路由跳转”、“跨端 UI 表现不一致”、“大数据页面传参”以及“本地存储极易被误删”等问题。

🎯 核心特性

  • 🚀 智能 Router
    • 防重拦截:内置智能防重逻辑,如全局检测并阻止对“登录页”等特殊页面的重复跳转。
    • 超大数据传参:突破 URL 长度限制,内部自动将超大 data 降级存入 Storage 并映射 ID,目标页自动解析。
  • 📦 安全 Storage
    • 动态持久化前缀:内置缓存隔离。带有特定前缀的数据(如设备号等)在使用 storage.clear() 时会被安全保留,防止误杀。
    • 泛型支持:全面拥抱 TypeScript,支持传入泛型实现强类型取值。
  • 🎨 跨端增强 UI
    • 自动抹平跨端差异,在 App-Plus 环境下甚至内置了基于 plus.nativeObj.View 的高性能原生圆角弹窗,并向下兼容 H5/微信小程序。

📦 目录结构

uni_modules/
└── app-core-utils/
    ├── package.json
    ├── readme.md
    └── js_sdk/
        ├── index.ts      // 统一导出和初始化入口
        ├── config.ts     // 默认全局配置
        ├── ui.ts         // 跨端 UI 封装 (原生弹窗、Toast、Loading等)
        ├── router.ts     // 增强版 Router
        └── storage.ts    // 增强版 Storage

🚀 快速开始

1. 引入与重导出 (推荐实践)

在你的项目中,为了方便全局调用,建议在项目的 utils/index.ts 中对其进行统一导出:

// @/utils/index.ts
import { ui, storage, router } from "@/uni_modules/app-core-utils/js_sdk";
export { ui, storage, router };

2. 覆盖默认配置 (可选)

插件内置了通用默认配置,如果你需要自定义参数(如自定义你的登录页路径或存储前缀),可以在 App.vuemain.ts 中调用 initYUtils 进行配置:

import { initYUtils } from "@/uni_modules/app-core-utils/js_sdk";

// 初始化并注入你项目的业务配置
initYUtils({
  loginRoute: "pages/login/index", // 你的登录页路径 (用于防止 token 过期时重复跳转)
  storagePrefix: "__PERSIST__", // 你自定义的持久化缓存前缀
});

📚 API 使用文档

1. UI 交互 (ui.ts)

import { ui } from "@/utils";

// 简单轻提示
ui.showToast("操作成功");
ui.showToast("操作失败", "error"); // 或者 'none', 'success'

// 显示加载中
ui.showLoading("加载中...");
ui.hideLoading();

// 唤起增强版模态框 (App 端为自定义圆角 NativeObj)
ui.showModal({
  title: "温馨提示",
  content: "确定要删除该项吗?",
  confirmText: "删除",
  confirmColor: "#FF4D4F",
}).then((res) => {
  if (res.confirm) console.log("用户点击确定");
});

2. 路由 (router.ts)

import { router } from "@/utils";

// 基础跳转 (自动格式化路径,自动带入普通查询参数)
router.push("/pages/home/detail", { id: 123 });

// 替换当前页
router.replace("/pages/home/index");

// 路由重启 (内置自动阻止冗余跳转到登录页)
router.reLaunch("/pages/sys/login/index");

// 🌟 高级特性:超大对象数据传参 (通过 Storage 中转避开 URL 长度限制)
router.pushWithData("/pages/home/detail", {
  hugeArray: [...Array(10000).keys()],
  complexObject: { a: 1, b: 2 },
});

// 在目标页面取值:
const data = router.getNavData();
// 如果传了 clear=true,获取后会自动销毁中转缓存

3. 本地存储 (storage.ts)

import { storage } from "@/utils";

// 基础读写 (支持泛型)
storage.set("userInfo", { name: "Admin" });
const user = storage.get<{ name: string }>("userInfo");

// 🌟 高级特性:持久化写入 (第三个参数 true)
// 此数据会被自动追加 storagePrefix 前缀
storage.set("deviceCode", "ABC-1234", true);

// 取值时,无需关心前缀,底层自动向后兼容查找
const deviceCode = storage.get("deviceCode");

// 清理缓存(安全模式)
// 此时只会清空普通的缓存(如 userInfo),上面设置为 true 的 deviceCode 会被保留!
storage.clear();

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。