Create React App 建立前端项目

lxf2023-04-18 13:06:01

在题,文中我们将要应用 Create React App 建立前端项目。根据文中,我们将了解到了下边重点知识:

  • 创建项目
  • 融合 vant UI 架构(假如你是开发设计 PC 端新项目,你能融合 ant-design 等架构)
  • 路由配置
  • 插口联动
  • 变更打包文件
  • 发布项目

在开始前,先说一下我根据什么样的环境操控的:

# 系统软件
macOS Apple M1 # 在 M1 上开发设计的过程当中,经历过 npm 包管理问题,阅读者假如是此自然环境,能够多试试几回
# Node 版本
v14.18.1
# Npm
6.14.15
# npm 源
npm -------- https://registry.npmjs.org/ # 如果下载依靠不通畅,可以考虑转换源再组装依靠

好,大家进到主题风格~

创建项目

运作 npm init react-app your-project-name cmd建立你新项目,例如:

npm init react-app jimmy-app

该指令公会全自动给你新项目装好依靠,你只要进到此项目网站根目录,运作 npm run start 就可以启动项目。默认设置前提下,用浏览器上根据 http://localhost:3000 就可以浏览新项目,复位页面如下所示:

Create React App 建立前端项目

图中演试工程中 "react" 版本号为 "^18.2.0"

融合 UI 架构

接下来我们考虑到了移动端的新项目,使用了较为成熟的 vant 架构。UI 框架的集成化如出一辙:

  • 组装依靠
  • 引进架构
  • 启用部件

我们可以通过 npm i react-vant 组装 vant 架构。根据 import { CompName } from react-vant 来引进架构部件,之后直接在部件文档中以 <Compname /> 引入。例如:

// NotFound.js
import { Button } from 'react-vant';

function NotFound() {
  return (
    <div className="not-found">
      <div className="number">404</div>
      <p className="text">Not Found</p>
      <Button>回到首页</Button>
    </div>
  )
}

export default NotFound;

Create React App 建立前端项目

路由配置

使用 react-router-dom 包来处理路由器,根据 npm install react-router-dom --save-dev 组装最新版本(截至发表文章,其最新版本为 "^6.10.0")。

必须注意的是,要是你组装是指版本号 5 的安装文件,下边的启用方法不适合做,请移步文尾借鉴的相匹配官方网站

Create React App 建立前端项目

在版本号六中,我们好好启用,以 history 方式例子

// App.js
import './App.css';
import { BrowserRouter as Router, Route, Routes} from 'react-router-dom';

import Home from './pages/Home.js';
import Login from './pages/Login.js';
import NotFound from './pages/NotFound.js';

function App() {
  return (
    <Router>
      <Routes>
        // 主页
        <Route path="/" element={<Home />}></Route>
        // 网页登陆
        <Route path="login" element={<Login />}></Route>
        // 404 网页页面
        <Route path="*" element={<NotFound />}></Route>
      </Routes>
    </Router>
  )
}

export default App;

插口联动

在研发的过程当中,大家开发设计好啦网页页面,必须连接后端插口。可是我们都是当地开发设计调节,该怎么办呢?

大家使用代理 http-proxy-middleware。根据cmd npm install http-proxy-middleware --save-dev 装好依靠以后,在工程 src 文件目录下新建 setupProxy.js 文档:

const { createProxyMiddleware } = require("http-proxy-middleware");

module.exports = function(app) {
  app.use(
    createProxyMiddleware("/api", {
      target: "https://jimmyarea.com", // 代理地址
      changeOrigin: true,
      pathRewrite: {
        "^/api": "/api/"
      }
    })
  )
}

⚠️ 修改了代理商,必须重启服务

jimmyarea.com 为个人站点的网站域名,在今年的五月份到期。五月份后浏览不上是正常现象

就以 jimmyarea.com/api/public/… 插口为例子,检测启用有没有问题。在此之前,还采用了 axios 网络请求库。

根据 npm install axios 组装此库,随后简易封装形式一下:

// utils/request.js
import axios from 'axios';

//储存系统变量
const isPrd = process.env.NODE_ENV === 'production';

//区别开发工具或是工作环境基本URL
export const baseURL = isPrd ? 'https://www.production.com' : ''

// 建立 auth axios 案例
const auth = axios.create({
  headers: {
    'Content-Type': 'application/json;charset=UTF-8',
    'X-Requested-With': 'XMLHttpRequest'
  },
  baseURL, // api base_url
  timeout: 30 * 60 * 1000, // 连接超时时长 30 min
});

// request interceptor
auth.interceptors.request.use(config => {
  const token = '123'
  if (token) {
    config.headers[ 'Authorization' ] = 'JWT '  token // 让每一个要求带上自定 token 请结合实际情况自主改动
  }
  return config
}, error => {
  console.log(error)
});

// response interceptor
auth.interceptors.response.use(
  // 回应解决
  response => {
    return response.data;
  },
  // 异常处理
  error => {
    console.log(error);
  }
)

export {
  auth
}

最后我们撰写插口:

// 检测
export function getJimmyData(params) {
  return auth({
    url: '/api/public/article',
    method: 'get',
    params
  })
}

启用:

// Test.js
import React, { useState, useEffect } from 'react';
import { getJimmyData } from '../../apis/user.js'

function Test() {
  const [list, setList] = useState([]);
  useEffect(() => {
    getJimmyData({
      page: -1
    }).then((res) => {
      if(res.data && res.data.results) {
        setList(res.data.results);
      }
    })
  }, []);

  return (
    <div className="Test">
      {
        list.map((item, index) => {
           return  <div key={ index }>{ item.title }</div>
        })
      }
    </div>
  );
}

export default Test;

实际效果如下图所示:

Create React App 建立前端项目

变更打包文件

这一部分内容,我还在其他回答里已经提到,有兴趣的阅读者能够换步 React 新项目途径加上指定浏览作为前缀 - SPA:变更项目实施作为前缀。

发布项目

这一部分内容,我还在其他回答里已经提到,有兴趣的阅读者能够换步 React 新项目途径加上指定浏览作为前缀 - SPA:部署项目。

参照

  • create-react-app
  • React 新项目途径加上指定浏览作为前缀 - SPA
  • react-vant.3lang
  • React Router
  • Axios

Thanks for reading.

文中已经参与「」