# mainsibufont **Repository Path**: nobyebye/mainsibufont ## Basic Information - **Project Name**: mainsibufont - **Description**: 学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-03 - **Last Updated**: 2026-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 前端开发规则(Ant Design + ProComponents + Next.js) ### 1. 技术栈与版本约定 - 框架:Next.js 14(App Router) - UI 库:Ant Design - ProComponents:仅在 **与当前 antd 版本兼容** 的前提下使用 - 如需使用 ProComponents,优先选择 **antd 5.x + 对应版本的 @ant-design/pro-components** - 保持 `antd` 与 `@ant-design/pro-components` 的版本匹配,避免 npm 依赖冲突 ### 2. 依赖安装规范 - **ProComponents 安装(仅在需要时使用)** - 安装前必须确认当前 `antd` 版本满足 `@ant-design/pro-components` 的 peerDependencies 要求。 - 推荐组合:`antd@^5.11.2` 搭配对应版本的 `@ant-design/pro-components`。 - 示例命令(仅在确认兼容后执行): ```bash npm i antd@^5.11.2 @ant-design/pro-components --save ``` --- ### 3. Next.js 路由规范(App Router) - **约定式路由** - 以 `app` 目录作为路由根目录。 - 目录下直接包含 `page.tsx` / `page.ts` / `page.jsx` / `page.js` 的文件才会被识别为路由。 - 示例: - `app/page.tsx` → `/` - `app/dashboard/page.tsx` → `/dashboard` - `app/dashboard/settings/page.tsx` → `/dashboard/settings` - **路由组(Route Group)** - 使用括号创建路由组目录,例如:`app/(shop)/layout.tsx`。 - 路由组目录 **不会出现在 URL 中**,但可以在该组内复用一套 `layout`。 - 示例: - 结构:`app/(shop)/account/page.tsx` → `/account` - 结构:`app/(shop)/cart/page.tsx` → `/cart` - **动态路由** - 使用中括号定义动态段,例如:`[questionId]`。 - 示例: ```tsx // app/question/[questionId]/page.tsx export default function Page({ params }: { params: { questionId: string } }) { return
我的题目:{params.questionId}
; } ``` - 对应 URL 如:`/question/1`、`/question/2` 等,`params.questionId` 即为动态参数。 --- ### 4. 静态资源与 Image 使用规范 - **静态资源目录** - 所有静态资源(图片、图标等)统一放在 `public/` 目录下,可按需建立子目录(如 `public/assets`)。 - Next.js 会对 `public` 下的资源进行静态托管。 - **使用 `next/image` 加载图片** - 必须优先使用 `next/image` 组件加载图片,以获得自动优化。 - 示例: ```tsx import Image from "next/image"; export default function Logo() { return logo; } ``` --- ### 5. 站点元信息与 SEO 文件规范 - **图标(favicon / icon / apple-icon)** - 文件放置位置遵循 Next.js 约定: - `app/favicon.ico`:站点 favicon 图标。 - `app/icon.(ico|jpg|jpeg|png|svg)`:站点或路由图标。 - `app/apple-icon.(jpg|jpeg|png)`:Apple 设备桌面图标。 - 图标文件可按路由层级放在对应目录下,复用 Next.js 的约定。 - **robots.txt 与 sitemap** - `app/robots.txt`:用于约束搜索引擎爬虫访问规则。 - 示例内容: ```txt User-Agent: * Allow: / Disallow: /private/ Sitemap: https://mianshiya.com/sitemap.xml ``` - sitemap 建议通过后端或 Next.js Route Handler 动态生成,路径与线上域名保持一致。 --- ### 6. 文件组织形式 - 每个页面与每个较大的组件,**使用独立目录** 管理: - 页面目录:使用 Next.js 约定式路由,在对应目录下放置 `page.tsx` 页面文件和对应样式文件(如 `index.css` 或 `page.module.css`)。 - 组件目录:每个组件目录内建议放置 `index.tsx` 与对应样式文件(如 `index.css` / `index.module.css`)。 - 公共组件与页面私有组件的放置位置: - 项目级公共组件:统一放在 `src/components` 目录下,可按业务再分子目录。 - 某个页面私有的组件:放在该页面目录下的 `components` 子目录,例如 `app/question/components/QuestionHeader.tsx`。 --- ### 7. 页面与组件开发规范 - **客户端 / 服务端组件声明** - 为了区分服务端渲染与客户端渲染,每个页面或组件在需要时应在文件开头显式声明: - 客户端组件:`"use client";` - 服务端组件:默认即为服务端组件,如需强调可使用 `"use server";`。 - **页面编写规范** - 使用 React 函数组件语法定义页面。 - 页面根元素建议包含唯一的 `id`,便于定位与调试。 - 示例: ```tsx "use client"; import "./index.css"; export default function HomePage() { return (
布说
); } ``` - **组件编写规范(TypeScript)** - 定义组件时必须使用 TypeScript 为 Props 声明类型。 - 示例: ```tsx "use client"; import "./index.css"; interface Props { value?: string; } const MdViewer = (props: Props) => { const { value = "" } = props; return
{value}
; }; export default MdViewer; ``` --- ### 8. 其他注意事项 1. **严格关注 TypeScript 提示与构建错误** - 开发过程中要及时修复 TypeScript 的类型错误和编译器报错。 - 定期执行打包构建(`npm run build`),因为 Next.js 构建规则较严格,小问题也可能在构建阶段失败。 2. **谨慎使用仅浏览器环境支持的对象** - 服务端渲染阶段无法访问 `window`、`document` 等浏览器对象。 - 若必须使用这些对象,确保组件声明为客户端组件(`"use client"`),并在副作用中安全访问(如 `useEffect`)。 - 确保客户端渲染与服务端渲染输出结构一致,避免 hydration 报错。