React项目规范:目录结构、根目录别名、CSS重置、路由、redux、二次封装axios

一、创建项目

先创建项目:create-react-app 项目名,然后换个图标,换个标题

配置jsconfig.json:这个文件在Vue通过脚手架创建项目时自动生成, React是没有自动生成, jsconfig.json是为了让vs code的代码提示更友好, 按需求决定是否配置;

{
   
  "compilerOptions": {
   
    "target": "es5",
    "module": "esnext",
    "baseUrl": "./",
    "moduleResolution": "node",
    "paths": {
   
      "@/*": [
        "src/*"
      ]
    },
    "jsx": "preserve",
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  }
}

二、目录结构

src文件夹的目录进行初始化:

assets: 存放静态资源 (如css, img等等)

baseUI: 存放一些通用的组件, 不只是本项目, 其他项目也会使用的组件

components: 存放本项目中通用的组件

hooks: 自定义的hook函数

router: 路由相关

services: 网络请求相关

stores: 状态管理, redux相关

utils: 封装的工具函数

views: 页面相关

三、craco配置别名并安装less

1.craco安装

1、安装craco:npm install craco

修改package.json:

/* package.json */
"scripts": {
   
-   "start": "react-scripts start",
-   "build": "react-scripts build",
-   "test": "react-scripts test",
	👇👇👇👇👇👇
+   "start": "craco start",
+   "build": "craco build",
+   "test": "craco test",
}

2.配置别名

在项目中层级嵌套会很深, 我们导入文件通常会有../../../甚至更多的上一级目录; 因此我们配置别名解决这个问题, 我的配置是使用@符号表示根目录

在项目根目录创建一个 craco.config.js 用于修改默认配置,该文件中的一些配置(如webpack)会和脚手架中的配置合并。修改别名的操作如下:

const path = require('path');

module.exports = {
   
    webpack: {
   
        alias: {
   
            "@": path.resolve(__dirname, 'src'),
            'components': path.resolve(__dirname, 'src/components'),
            'store':path.resolve(__dirname,'src/store'),
             ......
        }
    }
}

3.安装less

先安装:npm i craco-less

按照如下方式去craco.config.js中去配置一下:

const path = require('path');
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React项目中进行二次封装axios可以提高代码的复用性和可维护性。下面是一个简单的示例来说明如何进行react二次封装axios: 1. 首先,在你的项目文件中导入axios库。你可以使用以下命令安装axios库: ```javascript import axios from 'axios'; ``` 2. 创建一个封装axios请求的文件,例如`Http.js`。在这个文件中,你可以定义一些全局的请求配置,例如设置请求头、设置请求超时时间等。同时,你还可以定义一些通用的请求方法,例如GET、POST等请求方法,并对这些方法进行二次封装。这样可以在其他地方直接使用封装后的方法进行请求。以下是一个示例: ```javascript import axios from 'axios'; const Http = axios.create({ baseURL: 'http://api.example.com', // 设置基本的请求地址 timeout: 5000, // 设置请求超时时间 headers: { 'Content-Type': 'application/json', // 设置请求头 }, }); // 封装GET请求方法 export const get = (url, params) => { return Http.get(url, { params }); }; // 封装POST请求方法 export const post = (url, data) => { return Http.post(url, data); }; export default Http; ``` 3. 在实际使用中,你可以在需要发送请求的地方引入封装好的方法,并进行请求操作。以下是一个示例: ```javascript import Http from '@/axios'; import { call } from 'redux-saga/effects'; export function* asyncCheckLogin({payload}) { const res = yield call(Http.reqCheckLogin, payload.values); if(res && res.code === '0'){ // 跳转到首页 payload.history.replace('/'); }else { message.warn("你错了"); } } ``` 通过上述步骤,你可以在React项目中进行二次封装axios,提高代码的复用性和可维护性。你可以在封装的文件中设置全局的请求配置,并定义通用的请求方法,然后在其他地方引入并使用这些方法来发送请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值