Hello, Boswell
  • 基于Nuxt的C端应用脚手架

基于Nuxt的C端应用脚手架

介绍

这是一个基于Nuxt框架构建的C端应用脚手架,集成了多种常用功能和基本架构,旨在帮助开发者快速启动和构建现代Web应用。

特性

前端

  • 基于Nuxt的服务端渲染
  • 兼容性处理,支持旧版浏览器
  • 支持移动端自适应开发
  • 集成Tailwind CSS
  • 环境变量配置,支持多环境切换
  • 集成UI组件库,如Vant UI,Element Plus UI
  • 集成Pinia状态管理
  • 集成VConsole移动端调试工具
  • 集成Sentry进行错误监控和性能追踪
  • 集成modern-normalize,确保样式一致性
  • 前端路由守卫中间件
  • 错误展示页面
  • 集成图片验证码组件
  • 集成轨迹数据收集
  • 封装请求库、图片工具库、数学工具库和正则工具库

后端

  • 代理服务端接口,解决跨域问题
  • 集成Sequlize ORM,进行数据库开发
  • 集成Sentry进行错误监控和性能追踪

工具

  • eslint代码规范检查和prettier代码格式化
  • 集成nuxt 的 agent-skills 模块

架构设计

alt text

构建层

基于Nuxt 4的服务端渲染(SSR)

传统的服务端渲染应用做法大多都是多页架构的。单页架构的应用大多都是以客户端为主的渲染方式。Nuxt 4结合了两者的优点,既能享受单页应用的流畅体验,又能利用服务端渲染提升首屏加载速度和SEO效果。

兼容性处理

集成@vitejs/plugin-legacy vite插件,自动为不支持ESM的浏览器生成兼容代码,提升应用的兼容性和用户覆盖面。

支持移动端自适应开发

通过在工具链中集成pxtorem插件,页面元标签配置viewport, 配合监听屏幕大小改变根标签字体大小脚本,实现移动端自适应布局。

集成Tailwind CSS

集成Tailwind CSS,提供实用的CSS工具类,帮助开发者快速构建响应式和现代化的用户界面。

环境变量配置

通过环境变量区分不同的运行环境(开发、qa、测试、生产),实现配置的灵活管理和切换,提升应用的可维护性。

框架运行时层

集成UI组件库

集成了流行的UI组件库(如Vant UI,Element Plus UI),提供丰富的预设组件,帮助开发者快速构建美观且一致的用户界面,并根据页面类型选择性集成。

集成状态管理

集成Pinia作为状态管理库,提供简洁且高效的状态管理解决方案,支持模块化状态管理,方便维护和扩展。

集成移动端调试工具

集成VConsole移动端调试工具,方便开发者在移动设备上进行调试和问题排查,提高开发效率。

集成Sentry进行错误监控和性能追踪

集成Sentry服务,实时监控前端后端中的错误和性能问题,帮助开发者及时发现和解决问题,提升应用的稳定性和用户体验。

集成modern-normalize

集成modern-normalize,确保不同浏览器之间的样式一致性,减少浏览器默认样式差异带来的问题。

中间件

前端路由守卫中间件,处理路由权限验证、提升应用的安全性和用户体验。

应用功能层

错误展示页面

提供友好的错误页面,在页面路由错误,页面渲染错误等,可提升用户体验。

集成图片验证码组件

集成了图片验证码组件,增强应用的安全性,防止恶意请求和自动化攻击。为了提供组件的灵活性,通过vue的插槽提供无头的设计,允许开发者自定义触发容器,从而更好地适应不同的UI需求。

集成轨迹数据收集

集成轨迹数据收集功能,帮助开发者了解用户行为和应用使用情况,支持数据分析和优化决策。同时补充类型定义,提升代码的类型安全性和开发体验。

工具库

封装请求库

基于框架提供的$fetch封装客户端与服务端使用的请求库,简化API请求流程,提供统一的错误处理和数据转换机制,提高代码的可维护性和复用性。

图片工具库

封装图片处理工具库,提供常用的图片操作功能,如压缩、裁剪、格式转换等,简化图片处理流程,提升应用的性能和用户体验。

数学工具库

封装数学计算工具库,解决js精度问题,简化复杂计算流程,提升代码的可读性和维护性。

正则工具库

封装常用正则表达式工具库,提供便捷的字符串验证和处理功能,提升代码的效率和可靠性。

服务端代理

服务端代理接口,解决跨域问题,因为nuxt中的接口调用分为客户端调用和服务端调用两种场景,客户端请求场景下存在跨域问题。

集成nuxt 的 agent-skills

集成nuxt 的 agent-skills 模块,实现自动化的内容生成和交互功能,提升用户体验和应用的智能化水平。

三方依赖

  • lodash: 提供实用的JavaScript工具函数,简化数据处理和操作流程。
  • dayjs: 轻量级的日期处理库,简化日期和时间的操作和格式化。
  • zod: 强大的数据验证和解析库,提升数据的类型安全性和可靠性。

工具

eslint代码规范检查和prettier代码格式化

目录结构

nuxt/
├─ app/                              # 前端应用(Nuxt App)
│  ├─ error.vue                      # 全局错误页
│  ├─ assets/                        # 静态资源(参与构建)
│  │  ├─ css/
│  │  │  └─ main.css
│  │  ├─ img/
│  │  └─ js/
│  ├─ components/
│  │  └─ recaptcha.vue               # 图片验证码组件
│  ├─ composables/                   # 组合式函数(hooks)
│  ├─ constants/                     # 常量定义
│  ├─ middleware/
│  │  └─ auth.ts                     # 前端路由守卫
│  ├─ pages/                         # 页面路由
│  │  ├─ index.vue
│  │  ├─ about.vue
│  │  └─ user.vue
│  ├─ plugins/
│  │  └─ error-handler.ts            # 前端错误处理插件
│  ├─ stores/
│  │  └─ user.ts                     # Pinia store
│  ├─ types/
│  │  └─ global.d.ts                 # 全局类型补充
│  └─ utils/                         # 工具库
│     ├─ image.ts
│     ├─ math.ts
│     ├─ request.ts
│     ├─ storage.ts
│     └─ validator.ts
├─ server/                           # Nitro Server(服务端逻辑)
│  ├─ api/
│  │  └─ proxy/
│  │     └─ [...].ts                 # 代理转发入口(解决跨域/统一网关)
│  └─ middleware/
│     └─ error.ts                    # 服务端错误中间件
├─ public/                           # 纯静态资源(原样输出)
│  ├─ css/
│  │  └─ common/
│  │     └─ modern-normalize.css
│  └─ js/
│     └─ common/
│        ├─ flexible.js              # rem 适配脚本
│        ├─ track.js                 # 轨迹/埋点脚本
│        └─ vconsole.min.js          # 移动端调试
├─ modules/
│  └─ fixViteLegacyPlugin.ts         # 构建层:legacy 兼容处理
├─ doc/
│  ├─ Sequelize.md
│  └─ 基于Nuxt的C端应用脚手架.md
├─ .env.dev                          # 多环境配置
├─ .env.qa
├─ .env.stage
├─ .env.prod
├─ eslint.config.ts
├─ nuxt.config.ts
├─ tsconfig.json
├─ sentry.client.config.ts
├─ sentry.server.config.ts
├─ package.json
└─ package-lock.json
Last Updated: 4/17/26, 4:46 PM
Contributors: mingzhuang.ji