参考手册Workspace 包参考

utils 工具函数

通用工具函数库,提供 className 合并、URL 生成、用户名处理、手机号验证等功能

本页是 01MVP 模板的 Workspace 包参考,适合在需要查看导出、源码入口和扩展点时使用。若你正在按功能启用或改造模板,先看 核心概念

这是什么

@01mvp/utils 是项目的常用工具函数集,封装了项目中高频使用的格式化、验证和辅助逻辑。

能做什么

  • className 合并(cn -- 合并 Tailwind CSS 类名,自动处理冲突
  • URL 生成 -- 获取应用基础 URL(开发/生产环境自适应)
  • 用户名处理 -- 清理、验证、生成用户名
  • 手机号处理 -- 多国手机号格式化、验证、标准化
  • 常量配置 -- 城市列表、标签预设等

核心功能

className 合并(cn

合并 Tailwind 类名,后面的值覆盖前面的冲突属性。支持条件类名。

import { cn } from "@01mvp/utils";

cn("px-2 py-1", "px-4");            // "py-1 px-4"
cn("rounded", isActive && "bg-blue-500"); // 条件类名

URL 生成

import { getBaseUrl } from "@01mvp/utils";

getBaseUrl();  // 生产: "https://example.com"  开发: "http://localhost:7001"

用户名处理

import { sanitizeUsername, isValidUsername, generateUsername } from "@01mvp/utils";

sanitizeUsername("John Doe!");           // "john_doe"
isValidUsername("john_doe");             // true(规则:2-20字符,字母/数字/下划线)
generateUsername("张三", existingNames);  // 生成唯一用户名,处理冲突和保留名

手机号处理

import { normalizePhoneNumber, formatPhoneNumberForDisplay, validatePhoneNumber } from "@01mvp/utils";

normalizePhoneNumber("13812345678");              // "+8613812345678"
formatPhoneNumberForDisplay("+8613812345678");    // "+86 138 1234 5678"
validatePhoneNumber("+86", "13800138000");        // { isValid: true }

支持中国大陆、香港、澳门、台湾、美国、新加坡、英国、日本、韩国等国家/地区格式。

常量配置

import { CITIES, TAG_PRESETS } from "@01mvp/utils";

// CITIES: ["北京", "上海", "深圳", "广州", "杭州", "成都", ...]
// TAG_PRESETS.技术领域: ["AI", "Web3", "硬件", "独立开发", "设计", ...]

最佳实践

  • 存储标准化,显示格式化 -- 手机号存 +86138...,展示用 +86 138...
  • cn() 合并类名 -- 避免自己写类名拼接逻辑
  • 验证错误用返回结果中的提示信息 -- result.errorMessageresult.suggestion 是面向用户的

相关资源