# 技术栈与依赖 **Referenced Files in This Document ** - [package.json](file://package.json) - [vite.config.ts](file://vite.config.ts) - [tsconfig.json](file://tsconfig.json) - [uno.config.ts](file://uno.config.ts) - [src/main.ts](file://src/main.ts) - [src/common/naive-ui/components.ts](file://src/common/naive-ui/components.ts) - [src/stores/counter.ts](file://src/stores/counter.ts) ## 目录 1. [核心框架:Vue 3](#核心框架vue-3) 2. [状态管理:Pinia](#状态管理pinia) 3. [UI 组件库:Naive UI](#ui-组件库naive-ui) 4. [原子化样式:UnoCSS](#原子化样式unocss) 5. [构建工具:Vite](#构建工具vite) 6. [类型安全:TypeScript](#类型安全typescript) 7. [关键依赖项版本与选择理由](#关键依赖项版本与选择理由) ## 核心框架:Vue 3 本项目采用 Vue 3 作为核心前端框架,利用其组合式 API(Composition API)实现更灵活、可复用的逻辑组织。在 `main.ts` 文件中通过 `createApp` 初始化应用实例,并挂载根组件 `App.vue`,构成整个应用的入口。 Vue 3 提供了响应式系统、虚拟 DOM 渲染机制以及强大的组件化能力,使得桌面级 Web 应用的开发更加高效和模块化。结合 Vite 的现代构建流程,实现了极快的冷启动和热更新体验。 **Section sources** - [src/main.ts](file://src/main.ts#L1-L15) ## 状态管理:Pinia Pinia 作为 Vue 官方推荐的状态管理库,在本项目中用于集中管理全局状态。通过 `defineStore` 创建具有命名空间的 store 实例,如 `useCounterStore`,支持使用 `ref` 和 `computed` 构建响应式状态,并导出操作方法以供组件调用。 在 `main.ts` 中通过 `app.use(createPinia())` 注册 Pinia 插件,使所有组件均可通过 `useXXXStore()` 获取共享状态,避免了传统 Vuex 的冗余配置,提升了开发效率与类型推断准确性。 ```mermaid classDiagram class useCounterStore { +count : Ref +doubleCount : ComputedRef +increment() : void } useCounterStore --> ref : "uses" useCounterStore --> computed : "uses" useCounterStore --> defineStore : "created via" ``` **Diagram sources** - [src/stores/counter.ts](file://src/stores/counter.ts#L3-L11) **Section sources** - [src/stores/counter.ts](file://src/stores/counter.ts#L1-L13) - [src/main.ts](file://src/main.ts#L8-L9) ## UI 组件库:Naive UI 项目集成 Naive UI 作为 UI 组件解决方案,提供高质量、可定制的 Vue 3 组件集。为优化打包体积并实现按需引入,项目在 `src/common/naive-ui/components.ts` 中手动创建了一个轻量化的 UI 实例,仅注册所需组件(如 `NButton`, `NCard`, `NConfigProvider`),并通过 `create()` 方法生成可被 `app.use()` 注册的插件对象。 此外,项目还通过 `discrete-api.ts` 导出独立使用的 API(如 message、modal),并在 `theme.ts` 中扩展默认主题,自定义主色调为 `#0070f3`,确保视觉风格统一。 ```mermaid classDiagram class naiveUi { +components : Array } naiveUi --> NButton : "includes" naiveUi --> NCard : "includes" naiveUi --> NConfigProvider : "includes" naiveUi --> create : "created via" ``` **Diagram sources** - [src/common/naive-ui/components.ts](file://src/common/naive-ui/components.ts#L1-L11) - [src/common/naive-ui/theme.ts](file://src/common/naive-ui/theme.ts#L2-L14) **Section sources** - [src/common/naive-ui/components.ts](file://src/common/naive-ui/components.ts#L1-L11) ## 原子化样式:UnoCSS UnoCSS 是一个即时(on-the-fly)原子化 CSS 引擎,取代传统的 Tailwind CSS 实现方式。它允许开发者直接在模板中使用类名(如 `flex`, `p-4`, `text-lg`),并在构建时动态生成最小化 CSS,极大提升样式编写效率并减少冗余代码。 项目通过 `unocss/vite` 插件集成 UnoCSS,并在 `uno.config.ts` 中启用 `transformerVariantGroup` 和 `transformerDirectives`,支持嵌套语法(如 `hover:(bg-red-500 text-white)`)和 `@apply` 指令,增强可读性与灵活性。同时,`virtual:uno.css` 被引入 `main.ts`,确保样式正确注入。 **Section sources** - [uno.config.ts](file://uno.config.ts#L1-L10) - [vite.config.ts](file://vite.config.ts#L15-L16) - [src/main.ts](file://src/main.ts#L6) ## 构建工具:Vite Vite 作为现代前端构建工具,基于 ES 模块原生支持,显著提升了开发服务器的启动速度与热更新性能。项目通过 `vite.config.ts` 配置核心插件: - `@vitejs/plugin-vue`:支持 `.vue` 单文件组件解析 - `@vitejs/plugin-vue-jsx`:支持 JSX/TSX 语法 - `vite-plugin-vue-devtools`:集成 Vue DevTools 调试工具 - `unocss/vite`:集成 UnoCSS 样式引擎 配置中还设置了路径别名 `@` 指向 `src` 目录,便于模块导入。Vite 的开箱即用特性与 TypeScript、JSX、Sass 等技术无缝集成,构成了高效的开发环境基础。 ```mermaid flowchart TD A["用户请求 /"] --> B[Vite Dev Server] B --> C{资源类型} C --> |HTML| D[index.html] C --> |.vue 文件| E[Vite 解析 SFC] E --> F[编译 template/script/style] F --> G[返回 ES Module] C --> |TypeScript| H[Vite 实时转译] H --> I[浏览器执行] C --> |UnoCSS 类名| J[UnoCSS 动态生成 CSS] J --> K[注入 style 标签] I & K --> L[页面渲染完成] ``` **Diagram sources** - [vite.config.ts](file://vite.config.ts#L1-L30) **Section sources** - [vite.config.ts](file://vite.config.ts#L1-L30) ## 类型安全:TypeScript TypeScript 在项目中承担关键的角色,提供静态类型检查以预防运行时错误。项目采用分层配置策略,`tsconfig.json` 通过 `references` 引入 `tsconfig.node.json` 和 `tsconfig.app.json`,分别处理 Node.js 环境与应用代码的类型定义。 `.vue` 文件的类型支持通过 `vue-tsc` 实现,替代标准 `tsc` 进行类型检查,确保模板中的 props、emits 等具备完整类型推断。配合 VSCode 与 Volar 插件,开发者可在编辑器中获得精准的智能提示与错误检测。 **Section sources** - [tsconfig.json](file://tsconfig.json#L1-L12) - [README.md](file://README.md#L12-L15) ## 关键依赖项版本与选择理由 | 依赖包 | 版本范围 | 选择理由 | |-------|--------|---------| | vue | ^3.5.18 | 使用最新稳定版 Vue 3,支持 Composition API 与 Fragment | | pinia | ^3.0.3 | 官方状态管理库,轻量、类型友好、API 简洁 | | naive-ui | ^2.42.0 | 功能丰富、文档完善、支持 Tree-shaking 的 Vue 3 组件库 | | unocss | ^66.4.2 | 即时原子化 CSS,性能优于传统方案,支持高度定制 | | vite | ^7.0.6 | 极速 HMR、原生 ES Modules 支持、生态成熟 | | typescript | ~5.8.0 | 精确控制 TS 版本,避免意外升级导致兼容问题 | | vue-tsc | ^3.0.4 | 专为 Vue + TypeScript 设计的类型检查工具,支持 `