前端| 17 分钟阅读
前端项目总体概览
项目总体概览
BuidAI Team
@buidai_official

总体概览
- 前端框架:Nuxt 4 + Vue 3 Composition API + TypeScript
- 构建与运行:Nitro static/SSG,Vite(含 Tailwind v4 的 vite 插件)
- 样式与组件:Tailwind CSS v4、@nuxt/ui 组件库、PostCSS
- 内容系统:@nuxt/content v3(Alpha),SQLite 内容数据库
- SEO/站点:useSeoMeta、@nuxtjs/sitemap、全局 app.head
- 主题与模式:@nuxtjs/color-mode(classSuffix='',使用 dark 类)
- 图标体系:Heroicons、Lucide、Iconify(Phosphor 别名)
- 动效库:AOS(页面中以 data-aos 属性使用)
- 开发工具:Vitest、@nuxt/test-utils、vue-tsc、Nuxt DevTools
- 其他依赖:@nuxt/fonts(禁用 Google providers),sass(暂未使用 .scss)
核心框架
- Nuxt 4 与 SSG:脚本与配置表明采用静态预渲染与 generate 构建。参考 package.json 与 nuxt.config.ts。
- Vue 3 + TS:全项目页面与组件采用
<script setup lang="ts">,如 app.vue、agent.vue。
样式与 UI
- Tailwind v4:通过新式
@import "tailwindcss"引入,见 main.css。配置在 tailwind.config.js(含 colors/animation/keyframes)。 - Nuxt UI:在 nuxt.config.ts 启用;全局主题色在 app.config.ts 设为 violet;页面广泛使用 UButton/UPageCard 等,如 agent.vue、buidai.vue。
- 自定义主题变量:在 main.css 覆盖
--ui-primary与圆角;封装了.text-ui-primary等桥接类,便于统一品牌色使用(符合项目规则的主色桥接做法)。
内容与数据
- 内容模块:@nuxt/content v3 Alpha,数据库选型为 SQLite,见 nuxt.config.ts。SQLite 文件位于
.data/content/contents.sqlite。 - 查询 API:文档与博客通过
queryCollection系列 API 获取,示例 docs/...slug.vue、blog/index.vue。 - 路由预渲染:自研遍历工具生成 docs 路由并注入 prerender,见 getDocsRoutes.ts 与 nuxt.config.ts。
- Sitemap:静态路由 + 文档动态路由合并,见 getSitemapRoutes.ts 与 nuxt.config.ts。
SEO 与站点配置
- 页面级 SEO:广泛使用
useSeoMeta,例如 agent.vue、blog/index.vue、docs/...slug.vue。 - 全局 head:标题、meta、icon 与 Google Fonts 预连接在 nuxt.config.ts。注意:同时禁用了 @nuxt/fonts 的 Google providers(手动引入字体),设计上更可控。
- 站点 URL:Sitemap 中的基础 URL 见 nuxt.config.ts。
图标体系
- Heroicons:页面中通过
@heroicons/vue/24/outline组件导入使用,如 agent.vue、docs/...slug.vue。 - Lucide:悬浮按钮等场景使用 lucide-vue-next,如 BackToTop.vue。
- Iconify + Ph 别名:Nuxt UI 内部图标映射到
i-ph-*,见 app.config.ts。
动效与交互
- AOS:页面通过
data-aos属性使用滚动动画,如 buidai.vue 与场景卡片区域;依赖已安装但尚未看到全局初始化插件文件,建议后续补充 Nuxt 插件初始化以启用动画。 - 交互细节:大量过渡/动画类基于 Tailwind + CSS keyframes(tailwind.config 中定义)与自定义 utility 类,如 main.css。
构建与开发工具
- 构建脚本:
nuxt generate(SSG),nuxt preview(本地预览),nuxt dev(开发),nuxt typecheck(类型检查)。参考 package.json。 - 类型检查:建议按项目规则执行
npm run typecheck(已在规则中明确)。参考 project_rules.md。 - 测试:Vitest、@nuxt/test-utils、happy-dom/jsdom 已配置为依赖,但仓库尚未看到本地
tests/用例与scripts/test-sitemap.mjs脚本文件(package.json 中存在命令)。后续如需启用测试,建议补充相应目录与脚本。
文件与资源组织
- 路由页面:见 pages 目录(首页、Agent、解决方案、插件、博客、文档等)。
- 组件:通用与落地页组件拆分,见 components。
- 静态资源:集中在 public(图片、icon、robots.txt 等)。
- 全局样式:在 assets/css/main.css。
设计思路与技术考量
- 选择 Nuxt 4 + SSG:静态化输出降低运维复杂度,利于 CDN 部署与性能优化;Nitro preset=static 明确禁用平台特定自动检测,输出统一到
dist,部署一致性更好。 - 内容以 @nuxt/content v3 α + SQLite:无需后端 API 即可进行内容查询与路由生成;通过 getDocsRoutes.ts 保证预渲染路由完整性,避免文档页遗漏。
- UI 采用 @nuxt/ui + Tailwind v4:减少自研组件成本,保持一致的设计系统;在 main.css 封装品牌色桥接类,符合项目规则对主色来源和中性色的约束(避免直接使用非规范灰度色系)。
- 图标混合方案:Heroicons 用于业务页面一致性,Lucide 用于特定互动组件,Iconify 的 Ph 别名满足 Nuxt UI 内部;三者配合灵活覆盖不同场景。
- SEO 与可访问性:使用
useSeoMeta保证类型安全与清晰结构;页面交互元素均有可见焦点与足够对比度;图片懒加载与 alt 文本在业务页有体现。 - 动效 AOS 与自有动画:AOS 适合滚动触发类效果;Tailwind + keyframes 适合定制、轻量动画;二者组合覆盖动效需求但需注意初始化与性能(建议在大段列表中做节流或观察器控制)。
潜在影响与后续建议
- AOS 初始化:当前页面使用了
data-aos,建议增加 Nuxt 插件对 AOS init,避免属性不生效。 - 测试与脚本:
scripts/test-sitemap.mjs缺失,若保留命令应补齐脚本;建议新建tests目录并添加基础用例(路由生成、内容查询)。 - 依赖清理:
vue-router、@headlessui/vue、@storybook/vue3等目前未在代码中使用,后续可以按需移除或补齐使用场景,避免体积与维护成本。 - 主题一致性:全局
app.config.ts使用primary: 'violet',而main.css用 OkLCH 主色且项目规则要求统一主色来源;建议统一来源并通过封装类使用,减少视觉偏差。 - 字体策略:已禁用 @nuxt/fonts 的 Google provider,但仍通过 head 链接加载 Google Fonts;长远看可迁移到本地字体以提升隐私与加载稳定性。
如果你希望,我可以继续补充:
- 初始化 AOS 插件并在开发预览中验证动效
- 补齐
scripts/test-sitemap.mjs与基础 Vitest 用例,确保路由/内容的稳定性 - 清理未使用依赖或添加其使用示例,以保持技术栈精简一致
你好!