Skip to content

@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.jsdayjs。如果每个包都单独声明依赖,您的最终构建产物中可能会出现多份重复的代码。 通过统一从 @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 版本一致:

javascript
// ✅ 推荐:复用 TechUI 内部集成的 dayjs
import { dayjs } from "@techui/libs";

const date = dayjs().format('YYYY-MM-DD');
javascript
// ❌ 不推荐:单独安装可能会导致版本冲突和体积增加
// import dayjs from "dayjs";

致谢与协议

本库包含的代码基于多个开源项目构建。我们严格遵守各项目的开源协议(MIT/BSD等),并在此向原作者致敬。