Nav apraksta

BaiLuoYan 6508cd4b7e perf: 编译脚本优化 3 nedēļas atpakaļ
.cursor 5c692c8962 feat: 购买页面 1 mēnesi atpakaļ
.vscode e626006d4d feat: 购买页面 1 mēnesi atpakaļ
build 6508cd4b7e perf: 编译脚本优化 3 nedēļas atpakaļ
public 6823560ecc feat: home page 3 nedēļas atpakaļ
src 59e1736b8c fix: 修复footerbar中隐私政策链接 3 nedēļas atpakaļ
types b06c43c189 feat: 数据安全相关代码优化,firebase统计开关 1 mēnesi atpakaļ
.env c4b924e9ec feat: 对接支付逻辑 4 nedēļas atpakaļ
.env.development c498df3c2e fix: 修复打包脚本bug 4 nedēļas atpakaļ
.env.localdev c498df3c2e fix: 修复打包脚本bug 4 nedēļas atpakaļ
.env.production a5f74b1af8 first commit 1 mēnesi atpakaļ
.env.test c50cb7287c fix: 各环境下api地址调整 4 nedēļas atpakaļ
.gitignore a5f74b1af8 first commit 1 mēnesi atpakaļ
.markdownlint.json a5f74b1af8 first commit 1 mēnesi atpakaļ
.npmrc a5f74b1af8 first commit 1 mēnesi atpakaļ
.nvmrc a5f74b1af8 first commit 1 mēnesi atpakaļ
.prettierrc a5f74b1af8 first commit 1 mēnesi atpakaļ
.stylelintrc.mjs a5f74b1af8 first commit 1 mēnesi atpakaļ
README.md 6a4b639caf perf: 更新readme 4 nedēļas atpakaļ
commit.sh 2e0975b92e feat: 代码提交脚本 1 mēnesi atpakaļ
commitlint.config.js a5f74b1af8 first commit 1 mēnesi atpakaļ
eslint.config.js 321e4d7690 feat: 导航菜单 1 mēnesi atpakaļ
index.html 6823560ecc feat: home page 3 nedēļas atpakaļ
package.json e16b504ac2 feat: 依赖升级 3 nedēļas atpakaļ
pnpm-lock.yaml e16b504ac2 feat: 依赖升级 3 nedēļas atpakaļ
postcss.config.js a5f74b1af8 first commit 1 mēnesi atpakaļ
pull.sh 2e0975b92e feat: 代码提交脚本 1 mēnesi atpakaļ
push.sh 2e0975b92e feat: 代码提交脚本 1 mēnesi atpakaļ
tailwind.config.js 1bd4fe5c4f feat: 购买页面 1 mēnesi atpakaļ
tsconfig.json a5f74b1af8 first commit 1 mēnesi atpakaļ
vite.config.ts 6508cd4b7e perf: 编译脚本优化 3 nedēļas atpakaļ

README.md

Nomo Web

基于 React + TypeScript + Vite 的 H5 前端项目。

环境要求

  • Node.js >= 18.20.7
  • pnpm >= 9

快速开始

pnpm install --frozen-lockfile
pnpm dev

浏览器访问控制台输出的本地地址即可。

脚本说明

命令 说明
pnpm dev 本地开发(使用 .env.localdev + .env
pnpm build 生产构建(等价于 build:prod
pnpm build:dev 开发模式构建(.env.development
pnpm build:prod 生产模式构建(.env.production
pnpm build:test 测试环境构建(.env.test
pnpm preview 预览构建产物(使用 localdev 模式)
pnpm lint / pnpm lint:fix ESLint 检查 / 自动修复
pnpm stylelint / pnpm stylelint:fix 样式检查 / 自动修复

环境配置

通过不同 .env 文件区分环境,Vite 按 mode 加载:

文件 何时加载
.env 始终加载(公共默认)
.env.localdev pnpm dev / pnpm preview--mode localdev
.env.development pnpm build:dev
.env.production pnpm build / pnpm build:prod
.env.test pnpm build:test
.env.local 本地覆盖,除 test 外都会加载(一般不提交)

需在环境文件中配置的变量见 .env 内注释或项目文档。

技术栈

  • 框架:React 18、TypeScript
  • 构建:Vite 6、pnpm
  • UI:Ant Design 5、Tailwind CSS、SCSS/Less
  • 路由:React Router 7
  • 状态:基于 Context + Hooks 的 Model 方案(类 Umi max)
  • 国际化:i18next(zh-CN / en-US / fa-IR)
  • 请求:Axios 封装(src/utils/request
  • 图标@iconify/react + 自定义 SVG 转 Iconify 插件
  • 规范:ESLint、Prettier、Stylelint、Commitlint、Husky、lint-staged

项目结构

├── build/              # Vite 构建相关(插件、工具)
├── public/             # 静态资源
├── src/
│   ├── assets/         # 资源
│   │   └── iconify/    # 单色 single-color、多色 multi-color 图标
│   ├── components/     # 公共组件
│   ├── config/         # 应用与请求配置(含 request 拦截器、错误处理)
│   ├── defines/        # 枚举与常量
│   ├── hooks/          # 公共 Hooks
│   ├── i18n/           # 国际化配置
│   ├── layouts/        # 布局
│   ├── locales/        # 多语言文案(zh-CN、en-US、fa-IR)
│   ├── models/         # 全局状态 Model
│   ├── pages/          # 页面(按页面分目录)
│   ├── router/         # 路由配置
│   ├── services/       # API 接口(按模块分目录)
│   ├── styles/         # 全局样式
│   ├── utils/          # 工具与 request 封装
│   ├── App.tsx
│   └── main.tsx
├── types/              # 全局类型与 env 类型
├── index.html
├── vite.config.ts
└── package.json

开发规范摘要

  • 严格 TypeScript,遵循项目 ESLint/Prettier 配置
  • 提交信息使用 Conventional Commits
  • 组件:函数组件 + Hooks;样式优先 Tailwind,必要时 SCSS/Less
  • 用户可见文案全部走 locales,禁止在代码中硬编码
  • 常量与枚举放在 src/defines/,请求在 src/services/ 按模块组织
  • 新页面:在 src/pages/ 下建目录、在 routeslocales 中注册

状态管理(Model)

  • Model 定义在 src/models/,通过 createModel(hook, name) 创建。
  • 在组件中:const user = userModel.useModel(),使用返回的状态与方法。
  • 根组件已通过 autoImportModels 注入所有 Model 的 Provider。

详见 src/utils/model/ 与现有 userModeldialogModeluserConfigModel 实现。

图标

  • 单色图标:放入 src/assets/iconify/single-color/,会转为 currentColor,可用 className 控制颜色。
  • 多色图标:放入 src/assets/iconify/multi-color/,保留原色。
  • 使用:import icon from '@/assets/iconify/single-color/xxx.svg',再 <Icon icon={icon} />@iconify/react)。

多语言

  • 文案在 src/locales/ 下按语言分目录(zh-CN、en-US、fa-IR),每语言含 common、components、menus、pages 等模块。
  • 组件内:const { t } = useTranslation();t('key') 或带命名空间的 key。
  • 禁止在页面/组件中写死中文或英文字符串。

请求与接口

  • 请求封装:src/utils/request,基础配置与拦截器在 src/config/request/(认证、加解密、错误处理)。
  • 接口按模块放在 src/services/,每模块可有 typings.d.ts + index.ts
  • 调用:import { fetchXxx } from '@/services/xxx',错误由统一错误处理兜底,可选 skipErrorHandler 自行处理。

本地存储

  • src/utils/localUtilssrc/utils/sessionUtils 提供 createLocalTools / createSessionTools,支持按 key/value 加密与命名空间。
  • 通过环境变量配置加密密钥与存储命名空间,敏感数据建议开启加密选项。

部署

  • 构建产物在 dist/,将对应环境(如 test/production)的构建结果部署到静态服务器或 CDN 即可。
  • 多环境通过上述 build:dev / build:test / build:prod 与对应 .env.* 区分。