# 现代 TypeScript 工具函数库 ::u-page-hero --- ui: container: lg:py-20 class: dark:bg-gradient-to-b from-neutral-900 to-neutral-950 orientation: horizontal --- :home #top :hero-background #title :::motion 现代 [TypeScript]{.text-primary} 工具函数库. ::: #description :::motion --- transition: duration: 0.6 delay: 0.3 --- 为 TypeScript 项目设计的现代化工具函数库,涵盖数组、对象、字符串、异步操作等多个方面。全面支持 Tree-Shaking,提供完整类型定义和 Vue 组合式函数。 ::: #links :::motion --- transition: duration: 0.6 delay: 0.5 class: flex flex-wrap gap-x-6 gap-y-3 --- ::::u-button --- size: xl to: https://core.mhaibaraai.cn/docs/getting-started trailing-icon: i-lucide-arrow-right --- 快速入门 :::: ::::u-button --- color: neutral icon: i-simple-icons-github size: xl target: _blank to: https://github.com/mhaibaraai/movk-core variant: outline --- GitHub :::: ::: :: ::u-page-section --- class: dark:bg-neutral-950 --- #title 特性一览 #description `@movk/core` 提供了一套全面的、经过严格测试的 TypeScript 工具函数库,旨在简化您的日常开发工作。 #features :::u-page-feature --- icon: i-lucide-square-dashed --- #title 80+ 实用工具 #description 涵盖数组、对象、字符串、异步操作、URL 处理、树形结构等多个领域,提供丰富、高效的函数,覆盖各种常见场景。 ::: :::u-page-feature --- icon: i-lucide-square-function --- #title Vue 组合式函数 #description 提供 `useAppStorage`、`useCopyCode` 等即用型 Vue Composables,轻松为 Vue 项目集成响应式能力。 ::: :::u-page-feature --- icon: i-lucide-list-tree --- #title 强大的树形结构工具 #description 内置高效的树形数据结构处理工具,轻松实现查找、遍历、过滤、转换等复杂操作。 ::: :::u-page-feature --- icon: i-lucide-shield-check --- #title 完整类型定义 #description 全面使用 TypeScript 编写,提供完整的类型定义和卓越的类型推断,确保开发体验和代码质量。 ::: :::u-page-feature --- icon: i-lucide-package-check --- #title 支持 Tree-Shaking #description 精心设计的模块化结构,支持 Tree-Shaking 优化,仅打包您需要的代码,减小生产环境的包体积。 ::: :::u-page-feature --- icon: i-lucide-file-code-2 --- #title 现代化构建 #description 原生支持 ES Modules,使用 Unbuild 构建,无缝融入现代前端工程化体系,适用于 Vite、Nuxt 等环境。 ::: :: # 简介 ## 什么是 `@movk/core`? `@movk/core` 是一个为 TypeScript 项目设计的现代化工具函数库,提供了 80+ 经过精心设计和严格测试的函数,旨在简化日常开发、提升代码质量与效率。 无论您是处理数组操作、对象转换、字符串格式化、异步控制、URL 处理,还是管理复杂的树形结构,`@movk/core` 都提供简洁而强大的解决方案。对于 Vue 项目,还额外提供了与响应式系统集成的组合式函数。 ::card-group :::card{icon="i-lucide-puzzle" title="完全模块化"} 每个函数都是独立的模块,您可以按需导入,避免引入不必要的代码。 ::: :::card{icon="i-lucide-leaf" title="支持 Tree-Shaking"} 所有工具函数都支持 Tree-Shaking,最大限度地减小生产环境的打包体积。 ::: :::card{icon="i-lucide-shield-check" title="全面 TypeScript 支持"} 提供强大的类型定义和智能的代码提示,提升开发体验和代码健壮性。 ::: :::card{icon="i-lucide-feather" title="现代化构建"} 使用 Unbuild 构建,原生支持 ES Modules,无缝融入 Vite、Nuxt 等现代前端工程化体系。 ::: :::card{icon="i-lucide-square-function" title="Vue 组合式函数"} 为 Vue 项目提供与响应式系统集成的 Composables,如 useAppStorage、useCopyCode 等。 ::: :::card{icon="i-lucide-wrench" title="80+ 实用工具"} 涵盖数组、对象、字符串、异步操作、URL 处理、树形结构等多个领域的高效工具函数。 ::: :card-group :: # 安装 ## 开始 通过您喜欢的包管理器将 `@movk/core` 添加到您的项目中。 ::code-group ```bash [pnpm] pnpm add @movk/core ``` ```bash [yarn] yarn add @movk/core ``` ```bash [npm] npm install @movk/core ``` :: ## 用法 ::tip `@movk/core` 是完全模块化的,支持按需导入,所有函数都支持 Tree-Shaking。 :: ### 在 TypeScript/JavaScript 项目中使用 ```typescript [utils.ts] import { camelCase, chunk, debounce, parseUrl } from '@movk/core' // 数组操作 const items = [1, 2, 3, 4, 5, 6] const chunked = chunk(items, 2) // => [[1, 2], [3, 4], [5, 6]] // 异步控制 const handleSearch = debounce((query: string) => { console.log('Search:', query) }, 300) // URL 处理 const url = parseUrl('https://example.com/path?foo=bar') console.log(url.pathname) // => '/path' // 字符串转换 const text = camelCase('hello-world') // => 'helloWorld' ``` ### 在 Vue 项目中使用 在 Vue 项目中,除了通用工具函数外,还可以使用组合式函数: ```vue [MyComponent.vue] ``` ::note 所有函数都支持 Tree-Shaking。在生产构建中,只有您实际导入和使用的代码才会被打包。 :: # MCP Server ## 什么是 MCP? MCP (Model Context Protocol) 是一个标准化协议,使 AI 助手能够访问外部数据源和工具。@movk/core 提供 MCP 服务器,让 AI 工具能够直接访问函数信息、源代码和使用示例。 MCP 服务器提供结构化访问工具函数库,使 AI 工具在开发过程中更容易理解和协助使用 @movk/core。 ## 可用资源 @movk/core MCP 服务器提供以下资源供发现: - `resource://movk-core/all-functions`: 浏览所有可用函数及其分类 - `resource://movk-core/tree-operations`: 浏览树形结构操作的专题文档(核心特性) 您可以在 Claude Code 等工具中使用 `@` 访问这些资源。 ## 可用工具 @movk/core MCP 服务器提供以下按类别组织的工具: ### 查询工具 - `list_functions`: 列出所有可用的 @movk/core 函数及其分类和基本信息 - `get_function`: 获取特定函数的详细文档和使用示例 - `search_functions`: 按类别或关键词搜索函数 ## 可用提示 @movk/core MCP 服务器为常见工作流提供引导式提示: - `find_function_for_usecase`: 根据使用场景找到最适合的函数 您可以在 Claude Code 等工具中使用 `/` 访问这些资源。 ## 使用示例 配置完成后,您可以向 AI 助手提出如下问题: - "列出所有可用的 @movk/core 函数" - "获取 chunk 函数的文档" - "fromList 接受哪些参数?" - "查找数组相关的函数" - "列出所有树形结构操作函数" - "获取 useAppStorage 的使用示例" - "展示所有 URL 处理函数" - "我需要将树形数据转为扁平列表,用什么函数?" AI 助手将使用 MCP 服务器获取结构化 JSON 数据,并在开发过程中为 @movk/core 提供引导式协助。 # LLMs.txt ## 什么是 LLMs.txt? LLMs.txt 是专为大型语言模型(LLM)设计的结构化文档格式。@movk/core 提供 LLMs.txt 文件,其中包含工具函数库的完整信息,使 AI 工具能够更好地理解和协助 @movk/core 的开发。 这些文件针对 AI 消费进行了优化,包含函数签名、API 参数、使用模式和最佳实践的结构化信息。 ## 可用端点 我们提供 LLMs.txt 端点来帮助 AI 工具访问我们的文档: - `/llms.txt` - 包含所有函数的结构化概览及其文档链接(约 5K tokens) - `/llms-full.txt` - 提供完整文档,包括实现细节、示例、类型定义和最佳实践(100K+ tokens) ## 选择正确的文件 ::note **大多数用户应该从 /llms.txt 开始** \- 它包含所有基本信息,适用于标准 LLM 上下文窗口。仅当您需要完整的实现示例且 AI 工具支持大型上下文(200K+ tokens)时,才使用 `/llms-full.txt` 。 :: ## 重要使用说明 ::warning **@ 符号必须手动输入** \- 使用 Cursor 或 Windsurf 等工具时,必须在聊天界面中手动输入 `@` 符号。复制粘贴会破坏工具识别它作为上下文引用的能力。 :: ## AI 工具使用方法 任何支持 LLMs.txt 的 AI 工具都可以使用这些端点来更好地理解 @movk/core。 - "使用 @movk/core 文档 {rel=""nofollow""}" - "遵循 @movk/core 完整指南 {rel=""nofollow""}" # useAppStorage ## 用法 `useAppStorage` 是一个强大的组合式函数,它基于 `@vueuse/core` 的 `useStorage`,可以安全、轻松地管理浏览器的 `localStorage` 或 `sessionStorage`。 它会自动处理数据的序列化和反序列化,并提供响应式的状态管理。 ```vue ``` ::note 当从存储中读取的数据无法被正确解析时, `useAppStorage` 会自动使用 `defaultValue` 并将警告信息打印到控制台。 :: ## API ### `useAppStorage(config)`{.shiki,shiki-themes,material-theme-lighter,material-theme,material-theme-palenight lang="ts-type"} 创建并返回一个存储实例。 #### `config` 参数 ::field-group :::field --- required: true name: key type: string --- 存储项的唯一键名。 ::: :::field --- required: true name: defaultValue type: T --- 当存储中没有有效值时使用的默认值。 ::: :::field{name="storage" type="'localStorage' | 'sessionStorage'"} 要使用的浏览器存储类型。默认为 `localStorage` 。 ::: :::field{name="prefix" type="string"} 添加到 `key` 前面的可选前缀,用于创建命名空间,避免键名冲突。最终的键将是 `prefix:key` 。默认为 `movk` 。 ::: :: ### 返回值 `useAppStorage` 返回一个包含以下属性的对象: ::field-group :::field{name="state" type="Ref"} 一个响应式的 ref,其值与存储的数据保持同步。您可以直接读取或修改它。 ::: :::field{name="getItem" type="() => T"} 一个函数,用于从存储中读取并返回数据。如果数据无法解析,将返回 `defaultValue` 。 ::: :::field{name="setItem" type="(value: T) => void"} 一个函数,用于设置新的值。新值会被序列化后存储。 ::: :::field{name="removeItem" type="() => void"} 一个函数,用于从存储中移除该项。 ::: :: ## Changelog :commit-changelog{prefix="composables"} # useCopyCode ## 用法 `useCopyCode` 是一个简单而实用的组合式函数,可以轻松实现“复制到剪贴板”功能。它是一个异步函数,会返回一个表示复制是否成功的 `Promise`。 该函数优先使用现代的、安全的 `navigator.clipboard` API。如果环境不支持(例如在非 HTTPS 页面或旧版浏览器中),它会自动回退到使用 `document.execCommand('copy')` 的传统方法,以确保最大程度的兼容性。 ```vue