react+ts+ant+proxy+less+axios封装+全局loading和一些常用封装

  1. 初始化项目
npx create-react-app <projectname> --template typescript
  1. 目录简介

node_modules
public // 不参与文件打包,存放静态文件
  favicon.ico
  index.html
  logo192.png
  logo512.png
  manifest.json // 配置pwa的,不用管
  robots.txt // 搜索引擎怎么对待项目的一些配置:Disallow:/user,不允许搜索引擎访问user下面的内容,为空则允许全部访问
src
  App.css
  App.test.tsx
  App.tsx // 描述App的本身
  index.css
  index.tsx // 入口文件,做一些准备工作
  logo.svg
  react-app-env.d.ts // 预先引入一些定义好的ts的类型,先不用管
  reportWebVitals.ts // 做一些埋点上报,不用管
  setupTests.ts // 配置单元测试,可以引入自己的测试裤,eg:testing-library
.gitignore
package.json
README.md // 对本项目的一些说明
tsconfig.json // ts的一些配置
yarn.lock // 锁定精确的版本号
  1. 在根目录tsconfig.json配置相对路径,方便在组件中引入src下的其他一些资源(此步骤可忽略)
在 compilerOptions 中添加 "baseUrl": "./src", 与target同级
  1. 如果团队开发建议安装prettier代码格式eslint校验 可忽略
1. yarn add --dev --exact prettier

2. echo {}> .prettierrc.json

3. 新建一个` .prettierignore`文件 //不需要被格式化的文件
   文件内容为:
   build
   coverage
   
4. npx mrm lint-staged // 每次提交代码前自动格式化代码

5.package.json文件中找到"lint-staged",添加匹配项`ts``tsx`
   "*.{js,css,md,ts,tsx}": "prettier --write"

注:prettier和eslint工作的时候会有一些冲突,所以需要为了eslint单独配置一下

6. yarn add eslint-config-prettier
   在package.json中找到'eslintConfig',extends中添加"prettier" 
   //prettier会覆盖一下eslint的配置,使双方能共同工作 

7. 还可以配置一个commitlint,规范提交内容,具体不再赘述,自行尝试

8. yarn add tslint-eslint-rules --dev  // 安装tslint规则校验package.json -> "scripts"对象中添加 "lint": "tslint -c tslint.json 'src/**/*.{ts,tsx}'"
在根目录中添加文件tslint.json文件,具体配置内容根据项目来,请参考官方
https://github.com/buzinas/tslint-eslint-rules


-----到此配置结束,可以在组件中添加空行,然后git提交一下,做一下格式对比----


  1. 引入ant,这里是全局引入,如按需引入请参照ant官网有详细步骤说明,在此不再详细赘述
安装:    yarn add antd
样式引入: import 'antd/dist/antd.css';

主题配置:'yarn eject' 之后 在 webpack.config.js -> getStyleLoaders 函数中的合适位置添加

'modifyVars: theme,',theme是一个js文件其内容为

module.exports = {
  "@border-radius-base": "2px",
  "@error-color": "#e2c286",
  "@input-placeholder-color": "#C7C5C5",
  "@primary-color": "#e2c286",
};

小插曲:可能有些小伙伴的App.tsx引入的svg在页面上出不来,这里有两种解决方法

  1. 引入的logo是个module,图片的地址在default属性中,不能直接使用
    const logo = require('@/logo.svg');
    <img src={logo.default} className="App-logo" alt="logo" />

  2. 在config配置文件中找到url-loader,添加esModule: false, 重启即可

  1. 暴露webpack配置文件 此过程不可逆
yarn run eject     
// 如果报错This git repository has untracked files or uncommitted changes:
// git提交一下,再次执行一遍即可
  1. 安装less
yarn add less less-loader@^5.0.0

// 在webpack.config.js中添加配置项,复制一份sass配置,修改为lessRegex和lessModuleRegex即可
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;


//less-loader 默认是不支持js语法的, 需要手动开启,所以需要在webpack.config.js中添加配置项
javascriptEnabled: true 
  1. 配置@路径 可忽略
1. 在 tsconfig.json 文件中 'compilerOptions' 对象中添加   "paths": {"@/*": ["./src/*"]},
2. webpack.config.js 文件中搜索关键字'alias',在相应的位置添加 路径配置 ,比如
   "@": '../src',
   "@style": '../src/assets/style',
   "@until": '../src/assets/until',
  1. 配置全局常量,通常用于环境的区分
在webpack中配置全局常量是在'plugins'中添加 
new webpack.DefinePlugin({
	"process.env.NODE_ENV": JSON.stringify("production"),
}),'create-react-app'项目中,'yarn eject'之后
只需要在config -> env.js -> getClientEnvironment 函数中添加(以上为例)'NODE_ENV': JSON.stringify("production")

如果需要区分多个环境配置,请参考cross-env官网

  1. 配置本地代理
1. 官方推荐是在package.json中使用proxy
 
   由于package.json中,只能给proxy设置字符串;因此,这样的方式就导致,设置的代理只能配置一个,想要配置多个代理就不行了。
  
  "proxy": "http://172.18.22:8080"
  
2. 可通过中间件
   
   yarn add http-proxy-middleware --save
   
   在'src'目录下新建文件'setupProxy.js'文件, 重启即可!
  
   const { createProxyMiddleware: proxy } = require('http-proxy-middleware')
   module.exports = app => {
	  app.use('/api', proxy({
	    target: 'http://localhost',
	    changeOrigin: true,
	    pathRewrite: {
	      '^/api': ''
	    }
	  }))
    }

  1. 内容太长,下一篇吧~ react+ts环境 axios封装和全局loading
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值