# Nuwax 应用开发平台模板接入规范 > **版本**: 1.0.0 > **更新日期**: 2026-04-24 > **适用模板**: `react-vite`、`vue3-vite` --- ## 目录 - [1. 概述](#1-概述) - [2. 环境要求](#2-环境要求) - [3. 模板目录结构](#3-模板目录结构) - [4. 配置文件规范](#4-配置文件规范) - [5. 样式规范 TailwindCSS](#5-样式规范-tailwindcss) - [6. 路由规范 Hash 模式](#6-路由规范-hash-模式) - [7. 核心模块约定](#7-核心模块约定) - [8. UI 组件库](#8-ui-组件库) - [9. 构建与质量门禁](#9-构建与质量门禁) - [10. 交付物格式](#10-交付物格式) - [11. 禁止事项](#11-禁止事项) - [12. React / Vue 对照表](#12-react-vue-对照表) - [13. 验收 Checklist](#13-验收-checklist) --- ## 1. 概述 本文档定义了接入 Nuwax 应用开发平台的前端模板必须遵循的结构、配置和代码规范。 接入方需按照本规范交付符合平台标准的模板项目,以确保: - 模板可在 Nuwax 应用开发平台上正确运行(Hash 路由、静态托管兼容) - 构建产物符合平台部署要求 - 开发体验与平台工具链一致 **本规范中每一项均标注**: | 标记 | 含义 | |------|------| | **[必要]** | 不满足则无法通过验收,模板不可接入平台 | | **[可选]** | 推荐采用,但可由接入方根据业务需求自行决定 | --- ## 2. 环境要求 **[必要]** 以下为模板开发和构建的最低环境要求: | 工具 | 最低版本 | |------|----------| | Node.js | >= 18.0.0 | | pnpm | >= 8.0.0 | --- ## 3. 模板目录结构 ### 3.1 React + Vite 模板 **[必要]** ``` / ├── index.html # [必要] 入口 HTML ├── package.json # [必要] 包配置 ├── meta.json # [必要] 模板元信息 ├── vite.config.ts # [必要] Vite 构建配置 ├── tsconfig.json # [必要] TypeScript 配置 ├── tsconfig.node.json # [必要] Node 环境 TS 配置 ├── tailwind.config.js # [必要] TailwindCSS 配置 ├── postcss.config.js # [必要] PostCSS 配置 ├── components.json # [可选] shadcn/ui 组件配置 ├── AGENTS.md # [可选] AI Agent 规则文件 ├── CLAUDE.md # [可选] AI Agent 规则文件(与 AGENTS.md 保持一致) ├── .prettierrc # [可选] Prettier 格式化配置 ├── .eslintrc.json # [可选] ESLint 配置 ├── .editorconfig # [可选] 编辑器配置 └── src/ ├── main.tsx # [必要] 应用入口 ├── App.tsx # [必要] 根组件(RouterProvider) ├── index.css # [必要] 全局样式(含 Tailwind 指令) ├── vite-env.d.ts # [必要] Vite 类型声明 ├── pages/ # [必要] 页面组件目录 │ ├── Home.tsx # [必要] 首页 │ └── NotFound.tsx # [必要] 404 页面 ├── components/ # [必要] 组件目录 │ └── ui/ # [可选] UI 基础组件(shadcn/ui) ├── lib/ # [必要] 工具库目录 │ ├── api.ts # [可选] HTTP 客户端 │ ├── services.ts # [可选] 数据服务层 │ └── utils.ts # [必要] 工具函数(至少含 cn()) ├── router/ # [必要] 路由配置目录 │ └── index.tsx # [必要] 路由注册 └── examples/ # [可选] 示例页面 ``` ### 3.2 Vue 3 + Vite 模板 **[必要]** ``` / ├── index.html # [必要] 入口 HTML ├── package.json # [必要] 包配置 ├── meta.json # [必要] 模板元信息 ├── vite.config.ts # [必要] Vite 构建配置 ├── tsconfig.json # [必要] TypeScript 配置 ├── tsconfig.node.json # [必要] Node 环境 TS 配置 ├── tailwind.config.js # [必要] TailwindCSS 配置 ├── postcss.config.js # [必要] PostCSS 配置 ├── components.json # [可选] shadcn-vue 组件配置 ├── AGENTS.md # [可选] AI Agent 规则文件 ├── CLAUDE.md # [可选] AI Agent 规则文件(与 AGENTS.md 保持一致) ├── .prettierrc # [可选] Prettier 格式化配置 ├── .eslintrc.cjs # [可选] ESLint 配置 ├── .editorconfig # [可选] 编辑器配置 └── src/ ├── main.ts # [必要] 应用入口 ├── App.vue # [必要] 根组件() ├── style.css # [必要] 全局样式(含 Tailwind 指令) ├── pages/ # [必要] 页面组件目录 │ ├── Home.vue # [必要] 首页 │ └── NotFound.vue # [必要] 404 页面 ├── components/ # [必要] 组件目录 │ └── ui/ # [可选] UI 基础组件(shadcn-vue) ├── lib/ # [必要] 工具库目录 │ ├── api.ts # [可选] HTTP 客户端 │ ├── services.ts # [可选] 数据服务层 │ └── utils.ts # [必要] 工具函数(至少含 cn()) ├── router/ # [必要] 路由配置目录 │ └── index.ts # [必要] 路由注册 └── examples/ # [可选] 示例页面 ``` --- ## 4. 配置文件规范 ### 4.1 `package.json` **[必要]** 以下字段和 scripts 必须存在: ```jsonc { "name": "@xagi-templates/", // [必要] 遵循 @xagi-templates 命名空间(可自定义 name,但须保持 scoped 格式) "version": "", // [必要] 语义化版本,与 meta.json 保持一致 "private": true, // [必要] 标记为私有包 "type": "module", // [必要] ESM 模块系统 "scripts": { "dev": "vite", // [必要] 启动开发服务器 "build": "tsc && vite build", // [必要] 生产构建(Vue: "vite build") "type-check": "tsc --noEmit", // [必要] 类型检查(Vue: "vue-tsc --noEmit") "lint": "eslint src ...", // [必要] 代码规范检查 "check": "pnpm run type-check && pnpm run lint" // [必要] 组合质量门禁 }, "engines": { "node": ">=18.0.0" // [必要] Node 版本约束 } } ``` **[可选]** 推荐包含的 scripts: ```jsonc { "scripts": { "build:production": "NODE_ENV=production vite build", "preview": "vite preview", "lint:fix": "eslint src --fix", "clean": "rm -rf dist", "format": "prettier --write .", "format:check": "prettier --check ." } } ``` ### 4.2 `vite.config.ts` **[必要]** **[必要]** 必须配置 `@` 路径别名指向 `./src`: ```ts // react-vite import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import path from 'path' export default defineConfig({ plugins: [react()], resolve: { alias: { '@': path.resolve(__dirname, './src'), }, }, }) ``` ```ts // vue3-vite import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': path.resolve(__dirname, './src'), }, }, }) ``` ### 4.3 `tsconfig.json` **[必要]** **[必要]** 以下配置项必须包含: ```jsonc { "compilerOptions": { "target": "ES2020", "module": "ESNext", "moduleResolution": "bundler", "strict": true, // [必要] 严格模式 "noUnusedLocals": true, // [必要] 禁止未使用的局部变量 "noUnusedParameters": true, // [必要] 禁止未使用的参数 "noFallthroughCasesInSwitch": true, // [必要] switch 禁止贯穿 "skipLibCheck": true, "isolatedModules": true, "noEmit": true, "resolveJsonModule": true, "allowImportingTsExtensions": true, "baseUrl": ".", "paths": { "@/*": ["./src/*"] // [必要] 与 vite.config.ts 别名一致 } } } ``` React 模板额外需要:**[必要]** ```jsonc { "compilerOptions": { "jsx": "react-jsx" } } ``` Vue 模板额外需要:**[必要]** ```jsonc { "compilerOptions": { "jsx": "preserve" }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"] } ``` ### 4.4 `meta.json` **[必要]** 模板元信息,平台据此识别模板类型: ```jsonc { "name": "React + Vite", // 或 "Vue 3 + Vite" "description": "模板描述", "version": "", // [必要] 与 package.json 版本保持一致 "author": "", "framework": "react", // [必要] "react" 或 "vue" "bundler": "vite", // [必要] 固定为 "vite" "language": "typescript", // [必要] 固定为 "typescript" "category": "frontend" } ``` ### 4.5 `index.html` **[必要]** React 模板: ```html React Vite App
``` Vue 模板: ```html Vue3 Vite App
``` **[必要]** 关键要求: - React 挂载点 `id="root"`,Vue 挂载点 `id="app"` - `