# react to typescript **Repository Path**: dyb881/react-ts ## Basic Information - **Project Name**: react to typescript - **Description**: 基于 create-react-app 和 typescript 的 React 项目工程 - **Primary Language**: TypeScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 27 - **Forks**: 8 - **Created**: 2018-08-29 - **Last Updated**: 2025-05-21 ## Categories & Tags **Categories**: react-extensions **Tags**: None ## README # 已重构到 [react-app](https://github.com/dyb881/react-app) # react 项目包 --- [star](https://gitee.com/dyb881/react-ts/stargazers)
基于 create-react-app v2 --typescript 的项目工程
[使用 react-app-rewired 拓展配置](https://gitee.com/dyb881/react-ts/blob/master/config-overrides.js)
[状态管理默认使用 mobx](https://gitee.com/dyb881/react-ts/blob/master/src/store/index.ts)
[并已用 react-router 搭建页面框架,在页面配置文件配置即可添加新页面](https://gitee.com/dyb881/react-ts/blob/master/src/page/config.ts)
默认使用 antd | antd-mobile 作为主体 UI,已配置按需加载,推荐在 component 内部二次封装再导出,方便统一修改
支持 electron 跨平台桌面应用开发,需要自行引用包
这并不是一个框架,而是一个 react 项目的文件管理习惯
每一次开发项目都可进行优化以及一些组件和工具函数的加入
定期更新依赖版本
### 开发模式 --- 业务上拆分为一级路由,一个页面一个文件夹,注册在 page/config.ts
数据储存也按业务区分为单个文件到 store 并实例化到 store/index.ts 中,组成一个主 store,多个子 store,在 App.tsx 中注入,注入前可执行预设,比如自动登录判断等操作
外部引用大组件适当使用import()分包
如果是React组件 可以使用 React.lazy() and
[TsLint代码审查](https://gitee.com/dyb881/react-ts/blob/master/tslint.json) [项目文档](https://gitee.com/dyb881/react-ts/blob/master/PROJECT.md) ### 技术栈 --- - 使用语言 - ES next - TypeScript - 脚手架 - create-react-app 主体 - react-app-rewired 拓展配置 - tslint 代码审查 - CSS 处理 - 预处理 less scss sass - 后处理 postcss - 初始化 normalize.css - 模块化 CSS Modules - 默认依赖 - 热更新 react-hot-loader - 动画 react-addons-css-transition-group - 路由 react-router - UI库 antd antd-mobile - 状态管理 mobx mobx-react - 接口拦截并返回模拟数据数据 mockjs fetch-mock - 图片预览 react-zmage [已使用动态加载 /src/component/file/img/index.tsx 第7行](https://gitee.com/dyb881/react-ts/blob/master/src/component/file/img/index.tsx) - 工具函数 - [fetch 异步请求封装](https://gitee.com/dyb881/react-ts/blob/master/src/tool/request/index.ts) - [dom 插入工具](https://gitee.com/dyb881/react-ts/blob/master/src/tool/dom.ts) - [文件转化以及图片裁剪](https://gitee.com/dyb881/react-ts/blob/master/src/tool/file.ts) ### 目录 --- ``` │ config-overrides.js react-app-rewired 配置文件 │ NORM.md 开发规范文档 │ PROJECT.md 项目文档 │ README.md 描述文档 │ tsconfig.json ts编译配置 │ tslint.json ts代码审查配置 ├─public │ config.js 项目配置 └─src ├── App.less 全局样式 ├── App.test.tsx ├── App.tsx 项目初始化 ├── api.ts API请求工具初始化 ├── api_mock.ts API模拟数据注册 ├── react-app-env.d.ts 外部引用类型描述 ├── config.ts 主配置 ├── index.tsx 入口文件 ├── component 组件 │   ├── mobile 移动端组件 │   │   ├── antd antd 组件二次封装 │   │   ├── header 标题栏 │   │   └── tabBar 底部导航 │   ├── pc pc端组件 │   │   └── antd antd 组件二次封装 │   ├── file 文件 │   │   ├── get_file.tsx 获取文件 │   │   └── img 图片组件 - 包含预览功能 │   ├── form 表单工具组件 │   ├── router 批量路由页面注册 │   └── transition/style.less 全局 react-addons-css-transition-group 动画注册 ├── interface 公共接口 ├─page 所有页面 │  │ config.ts 页面配置 │ │ index.tsx 注册及主体页面 │ ├─Folder1 首页1 │ └─Folder2 页面2 ├─store 状态管理 │ index.ts 主状态 │ view.ts 视图状态 │ user.ts 用户状态 │ File1.ts 子状态1 │ File2.ts 子状态2 └── tool 工具函数 ├── city.json 省市县数据 ├── dom.ts dom相关 ├── file.ts 文件相关 ├── function.less less函数 ├── index.ts 常用 ├── mock.ts 模拟数据 ├── reg_exp.ts 正则 ├── request 请求封装 └── string. 字符串相关 ``` ### 安装教程 --- 1. npm config set registry https://registry.npm.taobao.org // 指定到淘宝镜像 2. npm install --global yarn // 安装 yarn 4. yarn // 安装项目 5. yarn start // 开发模式 6. yarn build // 打包 7. yarn serve // 以服务运行打包后的文件 8. yarn electron-start // 运行客户端开发模式,前提需要先运行 yarn start 9. yarn packager // 客户端打包,前提需要先运行 yarn build