快速开始
本指南将帮助你快速上手 Shared Library,了解基本用法和核心概念。
第一个示例
让我们从一个简单的颜色转换示例开始:
typescript
// 导入单个函数 - 获得最佳的 tree-shaking 效果
import { convertColor } from 'zcw-shared/functions/color/convertColor'
// 将 HEX 颜色转换为 RGB
const rgbColor = convertColor('#ff0000', 'rgb')
console.log(rgbColor) // 输出: rgb(255, 0, 0)
// 将 RGB 颜色转换为 HSL
const hslColor = convertColor('rgb(255, 0, 0)', 'hsl')
console.log(hslColor) // 输出: hsl(0, 100%, 50%)环境 API 注入
Shared Library 的核心特性是环境无关性。对于需要环境 API 的函数,你需要传入相应的环境对象:
浏览器环境
typescript
import { compressToTargetSize } from 'zcw-shared/functions/image/compressToTargetSize'
// 在浏览器中压缩图片
const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement
const file = fileInput.files?.[0]
if (file) {
const compressedFile = await compressToTargetSize(
file,
{ targetSize: 100 * 1024 }, // 100KB
{
Image: window.Image,
File: window.File,
createObjectURL: window.URL.createObjectURL.bind(window.URL),
createElement: document.createElement.bind(document)
}
)
console.log('压缩完成:', compressedFile)
}Node.js 环境
typescript
import { JSDOM } from 'jsdom'
import { modifyManifest } from 'zcw-shared/functions/android/modifyManifest'
import fs from 'fs'
import xpath from 'xpath'
// 在 Node.js 中修改 Android Manifest
const dom = new JSDOM()
const manifestPath = 'AndroidManifest.xml'
const modifiedXml = modifyManifest(
manifestPath,
[{ xpath: '//manifest', action: 'setAttribute', attributeName: 'package', value: 'com.example.app' }],
{
existsSync: fs.existsSync,
readFileSync: fs.readFileSync,
writeFileSync: fs.writeFileSync,
xmlParser: dom.window.DOMParser,
xmlSerializer: dom.window.XMLSerializer,
xpath
}
)错误处理
Shared Library 提供了完善的错误处理机制:
typescript
import { convertColor } from 'zcw-shared/functions/color/convertColor'
import { validateColor } from 'zcw-shared/functions/color/colorValidation'
try {
const result = convertColor('invalid-color', 'rgb')
} catch (error) {
console.error('颜色转换失败:', error.message)
}
// 或者使用验证函数
const color = 'invalid-color'
if (validateColor(color)) {
const result = convertColor(color, 'rgb')
} else {
console.error('无效的颜色格式')
}类型支持
如果你使用 TypeScript,Shared Library 提供了完整的类型定义:
typescript
import type { ColorFormat, ConvertOptions } from 'zcw-shared/types/color'
import { convertColor } from 'zcw-shared/functions/color/convertColor'
const format: ColorFormat = 'rgb'
const options: ConvertOptions = {
alpha: true,
precision: 2
}
const result = convertColor('#ff0000', format, options)
// TypeScript 会提供完整的类型检查和自动补全按需导入 - 库的核心优势
Shared Library 采用单函数导入设计,这是我们库的核心优势:
✨ 为什么这样设计?
- 极致的 Tree-Shaking - 只打包你实际使用的代码,零冗余
- 更小的包体积 - 每个函数独立,按需加载
- 更快的构建速度 - 减少打包器的解析负担
- 更清晰的依赖关系 - 一目了然地知道使用了哪些功能
导入方式
导入函数
typescript
// ✅ 导入单个函数
import { convertColor } from 'zcw-shared/functions/color/convertColor'
import { validateColor } from 'zcw-shared/functions/color/colorValidation'
import { compressToTargetSize } from 'zcw-shared/functions/image/compressToTargetSize'导入 Hooks
typescript
// ✅ 导入 hooks
import { useCache } from 'zcw-shared/reactive/useCache'
import { useLocalStorage } from 'zcw-shared/reactive/useLocalStorage'导入常量
typescript
// ✅ 导入常量
import { COLOR_PATTERNS } from 'zcw-shared/constants/colorPatterns'
import { NAMED_COLORS } from 'zcw-shared/constants/namedColors'导入类型定义
typescript
// ✅ 导入类型
import type { ColorFormat } from 'zcw-shared/types/color'
import type { AndroidBuildOptions } from 'zcw-shared/types/android-build'如何找到函数路径?
所有导出路径遵循统一规则:
- 函数:
zcw-shared/functions/{分类}/{模块名}/{文件名} - Vue Hooks:
zcw-shared/vue-hooks/{hookName} - 响应式(跨框架):
zcw-shared/reactive/{hookName} - 常量:
zcw-shared/constants/{constantName} - 类型:
zcw-shared/types/{typeName}
你可以在 API 文档 中查看每个函数的完整导入路径。
下一步
现在你已经了解了基本用法,可以: