React学习系列(一):React + antd 搭建项目

238 阅读3分钟

1.cra创建项目

create-react-app 快速构建 React 开发环境,自动创建的项目是基于 Webpack + ES6 。

npm install -g create-react-app // 构建react环境
 
yarn add create-react-app // yarn构建(推荐使用)
 
create-react-app my-app // 构建my-app
 
cd my-app // 切换到my-app
 
npm start // npm方式运行选择
 
yarn start // yarn方式运行选择
  • 快速构建出项目名为my-app的react+ts项目 create-react-app my-app --template typescript
my-app
├── README.md
├── node_modules
├── package.json
├── .gitignore
├── public
│   ├── favicon.ico
│   ├── index.html
│   ├── logo192.png
│   ├── logo512.png
│   ├── manifest.json
│   └── robots.txt
└── src
    ├── App.css
    ├── App.js
    ├── App.test.js
    ├── index.css
    ├── index.js
    ├── logo.svg
    ├── serviceWorker.js
    └── setupTests.js

1.文件夹结构

my-app/
  README.md
  node_modules/
  package.json
  public/
    index.html    // 页面模板
    favicon.ico
  src/
    App.css
    App.js
    App.test.js
    index.css
    index.js     js入口文件
    logo.svg

以上文件必须以准确的文件名存在!!!可以删除或重命名其他文件。 在src下创建子目录,为了更快的重建,webpack只处理src中的文件,需要将任何JS和CSS文件放入src。

2.可用脚本

npm start

在开发模式下运行应用。 在浏览器中打开 http://localhost:3000 进行查看。

如果你进行编辑,页面将重新加载。 你还将在控制台中看到任何代码检查错误。

npm test 或 yarn test

以交互模式运行测试监视器。 默认情况下,运行与自上次提交以来更改的文件相关的测试。

npm run build 或 yarn build

将用于生产的应用构建到 build 文件夹。 它在生产模式下正确地打包了 React,并优化了构建以获得最佳性能。

构建被压缩并且文件名包含哈希。

你的应用已准备好部署。

3.支持的浏览器和特性

这是在 package.json 中指定的示例 browserslist:以基于全局使用 (> 0.2%) 的广泛浏览器用于生产构建,以及现代浏览器用于开发。

"browserslist": {
  "production": [
    ">0.2%",
    "not dead",
    "not op_mini all"
  ],
  "development": [
    "last 1 chrome version",
    "last 1 firefox version",
    "last 1 safari version"
  ]
}

编辑 browserslist 配置时,你可能会注意到你的更改不会立即生效。 这是因为 babel-loader 中的问题 未检测到 package.json 中的变化。 一个快速的解决方案是删除 node_modules/.cache 文件夹并重试。

4.引入antd

1.使用npm或yarn安装

npm install antd --save // npm方式安装
 
yarn add antd // yarn方式安装

其他依赖,pnpm

pnpm install mobx mobx-react --save

pnpm install react-dom react-router-dom --save

pnpm install react-activation --save

pnpm install @ant-design/icons --save

pnpm install react-activation --save

AliveScope:react 实现keep-alive功能。将渲染过的组件(div.ka-content)存起来,等到再次用,从缓存拿到,使用js的 appendchild 到 KeepAlive中的 (div.ka-wrapper) import { AliveScope } from "react-activation";

5.按需加载

npm install babel-plugin-import // npm 方式
 
yarn add babel-plugin-import // yarn 方式

只需从 antd 引入模块即可,无需单独引入样式。

6.项目初始化配置

根目录新建文件vite.config.js

    const plugins = [
        styleImport({
            libs: [
                    {
                            libraryName: 'antd',
                            esModule: true,
                            resolveStyle: (name) => {
                                    return `antd/es/${name}/style/index`;
                            },
                    },
            ],
    })
    ]

参考链接:blog.csdn.net/qq_39606853…

7.index.html

 <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> // 标签页logo(浏览器给网站的身份标识)
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> iOS设备标签页logo
    <meta http-equiv="Cache-Control" content="no-transform" http-equiv="Cache-Control" />
    <meta http-equiv="Cache-Control" content="no-siteapp"  />
    <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1.0, user-scalable=no" />  // 渲染设备尺寸
    <meta name="theme-color" content="#000000" /> // 主题颜色
    <meta
      name="description"
      content="Web site created using create-react-app"
    />  // 网站描述
    <meta
      name="keywords"
      content="Web site created using create-react-app"
    /> // 网站关键词
    <link rel="dns-prefetch" href="//xxx.com" > // 尝试在请求资源之前解析域名
    <title>React App</title> // 网站名
  </head>
  
 <body>
  <noscript>You need to enable JavaScript to run this app.</noscript> // 脚本未被执行时替代的文本
  <div id="root"></div>
  <script src="/src/assets/iconfont/iconfont.js" type="module"></script> // 引入iconfont库,没有可以不引入
</body>

2. vite 创建项目

如果厌恶了 webpack 的打包速度,可以选择使用vite来创建 React 应用。 npm create vite@latest 执行完 命令行可以选择。

image.png

image.png

使用 npm run dev 启动,vite 的启动速度和热更新速度都很快,远超过 webpack,新项目完全可以使用 vite 来代替 cra。

image.png

参考链接:juejin.cn/post/717406…