@TechUI/Libs 简介
TechUI Libs (依赖集成库) 是 TechUI 生态系统的后勤军火库。
现代前端开发离不开优秀的开源社区。为了确保 TechUI 组件库的长期稳定性,我们并没有直接在业务代码中散乱地引入第三方依赖,而是建立了 @techui/libs。这是一个经过精心筛选、版本锁定且特定定制的开源工具集合。
一句话总结:TechUI 的官方“依赖通过港”,确保第三方库的 API 变动不会击穿您的业务防线。
设计哲学 为什么要整合?
您可能会问:“为什么不直接 npm install dayjs,而是要用 @techui/libs?”
避免破坏性变更 (Breaking Changes)
开源库的迭代非常快。上游库的一次 Major 版本更新(例如从 v3 升至 v4)可能会更改核心 API,导致您的项目突然报错。 @techui/libs 充当了防波堤。我们锁定了经过 TechUI 严格测试的特定版本,并在内部抹平了潜在的 API 差异,确保无论外部世界如何变动,TechUI 内部调用的接口永远稳定。
依赖去重 (Deduplication)
TechUI 的多个子包(Admin, Prime, Scifi)都依赖了 chroma.js 或 dayjs。如果每个包都单独声明依赖,您的最终构建产物中可能会出现多份重复的代码。 通过统一从 @techui/libs 导出,我们确保了整个 TechUI 生态共享同一份依赖实例,显著减小 Bundle 体积。
深度定制
某些库(如 svg-injector)虽然优秀,但在特定场景下(如 Wasm 环境或微前端架构)可能存在兼容性问题。我们在 @techui/libs 中对这些库进行了源码级的微调和补丁修复,使其完美适配 TechUI 的渲染管线。
包含的工具库
我们集成了以下行业标准的优秀库,并对原作者表示诚挚的感谢:
视觉与动画
- chroma.js: 强大的颜色处理与转换库。TechUI 的色彩系统 (
@techui/colors) 底层严重依赖它进行色阶计算。 - animate.css: 经典的跨浏览器 CSS 动画库。用于处理模态框、通知和页面转场的进出场动效。
- svg-injector.js: 动态 SVG 注入工具。它将
<img>标签引用的 SVG 转换为内联<svg>代码,使 CSS 能够控制图标颜色。
交互与 DOM
- @floating-ui (Core & Vue): 下一代的定位引擎。用于精确计算 Tooltip(文字提示)、Popover(气泡卡片)和 Dropdown(下拉菜单)的屏幕坐标,防止遮挡。
- devtools-detector: 浏览器开发者工具检测。这是 TechUI 安全体系的一部分,用于在检测到调试行为时触发特定的安全策略。
逻辑与数据
- dayjs: 轻量级(2KB)的时间日期处理库。Moment.js 的现代化替代品,用于 DataGrid 表格中的日期格式化。
- async-validator: 异步表单验证库。基于 Schema 的验证规则,支持 TechUI 表单组件的复杂校验逻辑。
使用方式
通常情况下,@techui/libs 作为 @techui/prime 或 @techui/admin 的底层依赖自动安装。
但在您的业务代码中,如果您需要使用这些工具,强烈建议直接从本库引入,以保持与 TechUI 版本一致:
// ✅ 推荐:复用 TechUI 内部集成的 dayjs
import { dayjs } from "@techui/libs";
const date = dayjs().format('YYYY-MM-DD');// ❌ 不推荐:单独安装可能会导致版本冲突和体积增加
// import dayjs from "dayjs";致谢与协议
本库包含的代码基于多个开源项目构建。我们严格遵守各项目的开源协议(MIT/BSD等),并在此向原作者致敬。