从 0~1 创建 React 项目(React+TS/JS)及 配置 路径别名 和 路径联想

2,379 阅读4分钟

前言

  • 创建 react 项目不用像创建Vue项目那么麻烦,我们直接创建运行命令即可;
    • 我目前也是React刚起步,可能有些创建项目的方式还没接触到,等接触到了再补充上;

一、创建项目

1.1 webpack

  • 脚手架:
    • create-react-app 是一个 创建 React 开发环境的工具,底层由Webpack构建,封装了配置细节,开箱即用;
  • 创建项目命令
    // create-react-app 核心包(固定写法),用于创建recat项目
    // js
    npx create-react-app 项目名称
    // ts
    npx create-react-app 项目名称 --template typescript
    
    • npx简介:
      • NodeJS工具包命令,查找并执行后续的包命令;
      • 目的:提升包内提供的命令行工具的使用体验;
      • 之前都是先在本地安装对应脚手架,再去使用脚手架创建项目;
      • 现在无需安装脚手架,就可以直接使用这个包提供的命令;
  • 运行命令,等待项目创建成功;
  • 之后按照提示,进入项目目录,下载依赖(pnpm/npm i);
  • 使用 pnpm/npm start 运行项目:
    • 启动命令不一定是npm start,如果安装了其他的包管理工具的话,也是可以使用的;
  • 其他创建项目的命令:
    • 不推荐使用
    npm init react-app my-app
    yarn create react-app my-app
    

1.2 vite

  • viet:
    • 可以实现 cra 同等能力,相比于 webpack 打包速度更快;
  • 创建项目命令
    // ts
    pnpm create vite@latest 项目名称 --template react-ts
    // 若要创建 js 项目,就把 react-ts 改成 react 即可
    
    • 不一定非要用yarn,其他的管理工具也是OK的;

1.3 启动项目eslint报提示处理

  • 当我们床创建一个新项目跑起来之后,页面上会展示一个关于eslint的提示;
    • image.png
  • 处理:
    • 目标文件:package.json
    • 删除该部分的代码即可;
    • 删除之后记得重启项目;
      • image.png

二、项目完善

2.1 清除无用文件

  • 第一次创建的项目,在src下有很多文件,对目前的我们来说,有用的只有App.js、index.js,其他的文件都可以删除;
    • image.png
  • 删除其他文件之后,项目就会报错,按照报错信息,清除无效引用;
  • 清除无用文件及无效代码之后,就只剩App.js、index.js这两个文件;
  • App.js
    function App() {
      return <div className="App">this is App</div>;
    }
    
    export default App;
    
  • index.js
    // 导入React必要的两个核心包
    import React from 'react';
    import ReactDOM from 'react-dom/client';
    
    // 导入项目的根组件
    import App from './App';
    
    // 把 App 根组件渲染到 id 为 root 的dom节点上
    // 哪里有 id=root 的节点?  ===>   public/index.html
    const root = ReactDOM.createRoot(document.getElementById('root'));
    root.render(
      // 严格模式
      <React.StrictMode>
        <App />
      </React.StrictMode>
    );
    
    

2.2 按照业务规范整理项目目录

  • 项目的整体目录架构,还是要根据公司来设置;
  • 以下目录只做参考哈;
文件夹作用
apis接口函数
assets静态资源(图片、样式)
components通用组件
pages页面级组件
router路由Router
storeRedux状态
utils工具函数
  • image.png

2.3 创建 router 及 store

三、依赖介绍

react:该包是核心,提供创建元素、组件等功能;
react-dom:提供DOM相关功能等;

四、配置路径 别名 及 联想

4.1 使用 cra 创建的项目

  • cra 将所有工程化配置都隐藏在react-scripts包中,所以项目中看不到任何配置信息;
  • 如果要修改 cra 的默认配置,有两种方案:
    • ✅ 通过第三方库修改;
      • @craco/craco
    • ❌ 通过yarn eject命令(这种方式不用管,项目中用不到);
      • 该命令会释放react-scripts中的所有配置到项目中,该过程不可逆;
  • 准备工作:
    • 下载依赖:pnpm install -D @craco/craco

4.1.1 路径别名

  • 路径别名
    • 在项目中,通过 @ 来表示 src 目录的 绝对路径;
  • 在项目根目录下新建 craco.config.js / ts 文件:
    // 从 node 中导入 内置的 path 模块
    const path = require('path');
    
    module.exports = {
      // webpack配置
      webpack: {
        // 配置别名
        alias: {
          // 约定使用 @ 表示 src 文件所在目录
          // path.resolve() 该方法将一些的 路径/路径段 合并并解析为绝对路径
          // 大家也可以自定义其他的路径别名,方便开发
          '@': path.resolve(__dirname, 'src/'),
          '@comp': path.resolve(__dirname, 'src', 'components')
        }
      }
    };
    
  • 配置好路径别名之后,需要将项目启动和打包的脚本修改为 craco 的方式:
    • 目标文件:
      • package.json
    {
      "scripts": {
        "start": "craco start",
        "build": "craco build",
        "test": "craco test",
        "eject": "craco eject"
      }
    }
    

4.1.2 路径联想

  • 路径联想
    • 在项目中当我们输入 @/ 的时候,会自动提示 src 下的文件出来;
4.1.2.1 TS项目
  • tsconfig.json中添加配置;
    {
        ...,
        "baseUrl": ".",
        "paths": {
            "@/*": ["src/*"],
            "@comp/*": ["src/components/*"],
        },
        ...,
    }
    
  • craco.config.ts报关于const的错(eslint);
  • 我们需要在项目根目录下新建.eslintrc文件:
    {
      "parserOptions": {
        "ecmaVersion": 2015
      }
    }
    
4.1.2.2 JS项目
  • 在项目根目录下创建 jsconfig.json 文件:
    {
      "vueCompilerOptions": {
        "baseUrl": ".",
        "paths": {
          "@src/*": ["src/*"],
          "@comp/*": ["src/components/*"]
        }
      }
    }
    
  • VsCode会自动读取jsconfig.json中的配置,让VsCode知道:
    • @就是src目录;
    • @comp就是src/components目录;

4.2 使用vite创建的项目

4.2.1 路径别名

  • 目标文件:
    • vite.config.js / ts
    import { defineConfig } from 'vite'
    import react from '@vitejs/plugin-react'
    // 需要下载 @types/node 依赖
    import { resolve } from 'path'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [react()],
      resolve: {
        alias: {
          '@': resolve(__dirname, './src'),
          '@comp': resolve(__dirname, './src', 'components')
        }
      }
    })
    

4.2.2 路径联想

  • 在项目根目录下创建 jsconfig.json 文件:
    {
      "vueCompilerOptions": {
        "baseUrl": ".",
        "paths": {
          "@src/*": ["src/*"],
          "@comp/*": ["src/components/*"]
        }
      }
    }
    
  • 若使用的是 ts,就需要在 tsconfig.json 中去配置:
    • 注意
      • image.png
    • 观察这两个path,在这两个文件中去配置(随便一个就行);
    • image.png