react脚手架(create-react-app)

1 开始

npx create-react-app my-app//执行后自动安装依赖包(需要node>=14)
npm start//启动:在内存中生成打包文件;启动服务器运行内存中的打包文件
npm run build//生产环境下打包 React:在内存中/本地生成打包文件;
npm run eject//暴露配置文件,一旦你执行 eject 命令,将无法撤销

npm i create-react-app -g//全局安装
create-react-app xxx //创建项目

问题:Cannot find module 'react-scripts/package.json'

解决:执行npm run eject后,会删除react-scripts,重新安装一下即可。 

2 文件结构

public/index.html—— 页面模版;

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <!-- %PUBLIC_URL%代表public文件夹的路径 -->
  <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <meta name="theme-color" content="#000000" />
  <meta name="description" content="Web site created using create-react-app" />
  <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />

  <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
  <!-- 引入bootstrap -->
  <link rel="stylesheet" href="/css/bootstrap.css">

  <title>React App</title>
  <style>
    .demo{
      background-color: rgb(209, 137, 4) !important;
      color: white !important;
    }
  </style>
</head>

<body>
  <noscript>You need to enable JavaScript to run this app.</noscript>
  <div id="root"></div>

</body>

</html>

问题:to改为二级路由后刷新:找不到bootstrap文件,找public/index.html

解决:改为绝对路径:public(React)或者/(常用)

    改为HashRouter(少见

src/index.js —— JavaScript 入口文件。

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

src/App.jsx —— App组件

//默认暴露和分别暴露可以同时使用
import React, { Component } from 'react'
// 防止不同组件中的相同类名冲突
import hello from './testCss.module.css'
//引入样式用import;引入.js  .jsx 可以省略文件后缀,index文件也可以省略

export default class App extends Component {
  render() {
    return (
      <div className={hello.title}>
        app组件
      </div>
    )
  }
}

src/setupProxy.js —— 代理配置

监视拦截请求,转发请求。只能在开发时使用。

const proxy = require('http-proxy-middleware');
/*
  changeOrigin设置为true时,服务器收到的请求头中的host为:localhost:5000
  changeOrigin设置为false时,服务器收到的请求头中的host为:localhost:3000
  changeOrigin默认值为false,但我们一般将changeOrigin值设为true
*/
module.exports = function (app) {
  app.use(//可以配置多个代理
    proxy('/api1', {
        target: 'http://localhost:5000',
        changeOrigin: true,
        pathRewrite:{'^api1':''}
    }),
    proxy('/api2', {//api1是需要转发的请求(所有带有/api1前缀的请求都会转发给5000)
        target: 'http://localhost:5001',//服务器地址
        changeOrigin: true,//服务器接收到的请求头中host字段的值
        pathRewrite:{'^api2':''}//去除请求前缀,保证交给后台服务器的是正常请求地址
    }),
  )
}

3 环境变量

        注意:react-scripts的版本需要高于0.2.3。

3.1 定义

.env.development/.env.test/.env.production文件中定义

REACT_APP_URL=http://www.baidu.com:8080

3.2 读取 

process.env.NODE_ENV (默认) 

process.env.REACT_APP_URL(自定义)

命令及变量的对应关系

npm start:NODE_ENV 值为'development';.env.development文件中读取变量。

npm test:NODE_ENV 值为'test';.env.test文件中读取变量。

npm run build:NODE_ENV 值为'production';.env.production文件中读取变量。

4 样式

4.1 CSS Modules

基本用法如下:

react组件样式覆盖问题_史学娇的博客-CSDN博客

如果需要使用sass:

 npm install node-sass --save

4.2 CSS Reset

在CSS文件中的任意位置添加 @import-normalize;。只需添加一次,重复的引入会被自动删除。

@import-normalize;

4.3 图片引入

import React from 'react';
import logo from './logo.png'; // Tell Webpack this JS file uses this image
console.log(logo); // /logo.84287d09.png

function Header() {
  // Import result is the URL of your image
  return <img src={logo} alt="Logo" />;
}
export default Header;

5 引入UI组件库

5.1 antd

安装antd,并配置按需引入,方法如下:

在 create-react-app 中使用 - Ant Design

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值