v3-use-utils
un-pany/v3-admin-vite/.agents/skills/v3-use-utils/SKILL.md
项目内置工具函数使用教程,涵盖验证、日期格式化、CSS 变量、权限判断、本地存储等工具。当用户提到以下任何场景时都应触发:使用工具函数、调用 utils、格式化日期、判断权限、操作 localStorage、获取/设置 CSS 变量、验证数据类型、判断外链、获取/存储 Token。即使用户没有明确说 Utils,只要意图是使用项目内置的通用工具函数就应该使用此 Skill。
Skill7.1k starsChanged 4 months ago
What's in it
- 内置工具函数使用教程
- 验证工具 @@/utils/validate
- 日期格式化 @@/utils/datetime
- CSS 变量 @@/utils/css
- 权限判断 @@/utils/permission
- 本地存储 @@/utils/local-storage
- 使用原则
---
name: v3-use-utils
description: 项目内置工具函数使用教程,涵盖验证、日期格式化、CSS 变量、权限判断、本地存储等工具。当用户提到以下任何场景时都应触发:使用工具函数、调用 utils、格式化日期、判断权限、操作 localStorage、获取/设置 CSS 变量、验证数据类型、判断外链、获取/存储 Token。即使用户没有明确说 Utils,只要意图是使用项目内置的通用工具函数就应该使用此 Skill。
metadata:
author: pany
version: "2026.06.03"
---
# 内置工具函数使用教程
项目在 `src/common/utils` 目录下提供了一组通用工具函数,通过路径别名 `@@/utils/` 导入。
本 Skill 定义的是项目内置的工具函数,当这些函数不存在时,以用户需求为准,新增对应函数。
## 验证工具 `@@/utils/validate`
```ts
import { isArray, isString, isExternal } from "@@/utils/validate"
// 判断是否为数组
isArray([1, 2, 3]) // true
// 判断是否为字符串
isString("hello") // true
// 判断是否为外链(以 http(s)://、mailto:、tel: 开头)
isExternal("https://example.com") // true
isExternal("/dashboard") // false
```
## 日期格式化 `@@/utils/datetime`
基于 dayjs 封装,无效日期返回 `"N/A"`。
```ts
import { formatDateTime } from "@@/utils/datetime"
// 默认格式 YYYY-MM-DD HH:mm:ss
formatDateTime("2026-01-15T10:30:00") // "2026-01-15 10:30:00"
// 自定义格式
formatDateTime("2026-01-15", "YYYY/MM/DD") // "2026/01/15"
// 支持时间戳
formatDateTime(1737000000000) // 格式化后的日期时间
// 无效输入
formatDateTime("invalid") // "N/A"
```
## CSS 变量 `@@/utils/css`
读取和设置 CSS 变量(变量名必须以 `--` 开头)。`getCssVar` 未找到变量时返回空串 `""`,不是 `undefined`。
```ts
import { getCssVar, setCssVar } from "@@/utils/css"
// 获取全局 CSS 变量
const color = getCssVar("--el-color-primary")
// 设置全局 CSS 变量
setCssVar("--el-color-primary", "#409eff")
// 操作指定元素上的 CSS 变量
const el = document.querySelector(".container") as HTMLElement
setCssVar("--bg-color", "#fff", el)
```
## 权限判断 `@@/utils/permission`
基于当前用户角色或权限判断是否拥有指定权限,内部读取 `useUserStore().roles` 和 `useUserStore().permissions`。
```ts
import { checkPermission } from "@@/utils/permission"
// 判断当前用户是否拥有 admin 或 editor 角色
if (checkPermission(["admin", "editor"])) {
// 有权限
}
// 判断当前用户是否拥有指定权限
if (checkPermission(["permission:button-level"])) {
// 有权限
}
```
适用于模板中 `v-permission` 指令无法覆盖的场景(如在 TS 逻辑中做条件判断)。
## 本地存储 `@@/utils/local-storage`
对 localStorage 的类型安全封装,所有 key 统一由 `@@/constants/cache-key` 中的 `CacheKey` 管理。
```ts
import { getToken, setToken, removeToken } from "@@/utils/local-storage"
// Token 操作
setToken("eyJhbGciOiJIUzI1NiJ9...")
const token = getToken()
removeToken()
```
可用函数一览:
| 分组 | 函数 | 说明 |
|------|------|------|
| Token | `getToken` / `setToken` / `removeToken` | 用户认证令牌 |
| 布局配置 | `getLayoutsConfig` / `setLayoutsConfig` / `removeLayoutsConfig` | 系统布局设置 |
| 侧边栏 | `getSidebarStatus` / `setSidebarStatus` | 侧边栏展开/收起状态 |
| 主题 | `getActiveThemeName` / `setActiveThemeName` | 当前主题名称 |
| 标签栏 | `getVisitedViews` / `setVisitedViews` / `getCachedViews` / `setCachedViews` | 标签页缓存 |
## 使用原则
1. 优先使用这些内置工具,不要重复造轮子
2. 需要新增 localStorage 存储项时,先在 `CacheKey` 中定义 key,再在 `local-storage.ts` 中添加对应的 get / set 函数
3. 需要新增通用工具时,根据功能归类到对应文件,或创建新的工具文件
4. 工具文件之间可以互相引用(如 `permission.ts` 引用了 `@@/utils/validate`),新建工具时也可复用已有工具
More agent context in un-pany/v3-admin-vite
11 other files this repository gives its agents.
AGENTS.md
CLAUDE.md
Cursor rule
Skill
- v3-create-crud.agents/skills/v3-create-crud/SKILL.md
- v3-upsert-route.agents/skills/v3-upsert-route/SKILL.md
- v3-upsert-store.agents/skills/v3-upsert-store/SKILL.md
- v3-use-composables.agents/skills/v3-use-composables/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

