Vite搭建React项目的方法步骤

前言

日常放鸽,火钳刘明

这是一个基于 vite 搭建的 React 的项目,开发体验非常棒。

创建一个 Vite 项目

yarn create @vitejs/app

如上图,选择了 react-ts 预设模板,如果出现下图一样的工程

yarn   // 安装依赖
yarn dev  // 启动开发环境

打开浏览器输入http://localhost:3000/#/,如上图所示的话。那么恭喜你,你可以正常开发 React 项目了。完结撒花

如果不行的话,直接看 vite 官网,它比我写的详细

改造工程

但上述只是一个基础的 React demo,在实际开发项目中,是远远不够的,需要额外做一些项目配置

目录约定

根据日常的开发习惯,先进行基本的目录约定

├── dist/       // 默认的 build 输出目录
└── src/       // 源码目录
 ├── assets/     // 静态资源目录
 ├── config
  ├── config.js    // 项目内部业务相关基础配置
 ├── components/    // 公共组件目录
 ├── service/     // 业务请求管理
 ├── store/      // 共享 store 管理目录
 ├── until/      // 工具函数目录
 ├── pages/      // 页面目录
 ├── router/     // 路由配置目录
├── .main.tsx      // Vite 依赖主入口
├── .env       // 环境变量配置
├── vite.config.ts     // vite 配置选型,具体可以查看官网 api
└── package.json

配置路由

改造 main.tsx

import React from 'react'
import ReactDOM from 'react-dom'
import { HashRouter, Route, Switch } from 'react-router-dom'
import routerConfig from './router/index'
import './base.less'

ReactDOM.render(
 <React.StrictMode>
 <HashRouter>
  <Switch>
  {
   routerConfig.routes.map((route) => {
   return (
    <Route key={route.path} {...route} />
   )
   })
  }
  </Switch>
 </HashRouter>
 </React.StrictMode>,
 document.getElementById('root')
)

router/index.ts 文件配置

import BlogsList from '@/pages/blogs/index'
import BlogsDetail from '@/pages/blogs/detail'

export default {
 routes: [
 { exact: true, path: '/', component: BlogsList },
 { exact: true, path: '/blogs/detail/:article_id', component: BlogsDetail },
 ],
}

可以参考上述的配置,把其他的属性也配置进去,比如重定向(redirect)、懒加载等常见路由配置项

另外个人比较倾向通过配置来生成路由,约定式路由总感觉不太方便。

service 管理

所有项目请求都放入 service,建议每个模块都有对应的文件管理,如下所示

import * as information from './information'
import * as base from './base'

export {
 information,
 base
}

这样可以方便请求管理

base.ts 作为业务请求类,可以在这里处理一些业务特殊处理

import { request } from '../until/request'

const prefix = '/api'

export const getAllInfoGzip = () => {
 return request({
 url: `${prefix}/apis/random`,
 method: 'GET'
 })
}

until/request 作为统一引入的请求方法,可以自定义替换成 fetch、axios 等请求库,同时可以在此方法内封装通用拦截逻辑。

import qs from 'qs'
import axios from "axios";

interface IRequest {
 url: string
 params?: SVGForeignObjectElement
 query?: object
 header?: object
 method?: "POST" | "OPTIONS" | "GET" | "HEAD" | "PUT" | "DELETE" | undefined
}

interface IResponse {
 count: number
 errorMsg: string
 classify: string
 data: any
 detail?: any
 img?: object
}

export const request = ({ url, params, query, header, method = 'POST' }: IRequest): Promise<IResponse> => {
 return new Promise((resolve, reject) => {
  axios(query ? `${url}/?${qs.stringify(query)}` : url, {
   data: params,
   headers: header,
   method: method,
  })
   .then(res => {
    resolve(res.data)
   })
   .catch(error => {
    reject(error)
   })
 })
}

具体通用拦截,请参考 axios 配置,或者自己改写即可,需要符合自身的业务需求。

这里使用 axios 构建出来的资源有问题,不要直接使用,请参考之前的请求封装替换成 fetch,如果有同学构建成功的,请留言 = =!

在具体业务开发使用的时候可以按照模块名引入,容易查找对应的接口模块

import { information } from "@/service/index";

const { data } = await information.getAllInfoGzip({ id });

这套规则同样可以适用于 store、router、utils 等可以拆开模块的地方,有利于项目维护。

上述是针对项目做了一些业务开发上的配置与约定,各位同学可以根据自己团队中的规定与喜好行修改。

其他配置

这里主要是关于 vite.config.ts 的配置,对项目整体做一些附加配置。

import { defineConfig } from 'vite'
import reactRefresh from '@vitejs/plugin-react-refresh'
import vitePluginImp from 'vite-plugin-imp'

export default defineConfig({
 plugins: [
 reactRefresh(),
 vitePluginImp({
  libList: [
  {
   libName: 'antd-mobile',
   style(name) {
   return `antd-mobile/lib/${name}/style/index.css`
   },
  },
  ]
 })
 ],
 resolve: {
 extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json'],
 alias: {
  '@': '/src'
 }
 },
 server: {
 proxy: {
  // 选项写法
  '/api': {
  target: 'https://www.xxx.xxx',
  changeOrigin: true,
  rewrite: (path) => path.replace(/^\/api/, '')
  },
 }
 },
 css: {
 postcss: {
  plugins: [
  require('postcss-pxtorem')({ // 把px单位换算成rem单位
   rootValue: 32, // 换算基数,默认100,这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多上px了。
   propList: ['*'], //属性的选择器,*表示通用
   unitPrecision: 5, // 允许REM单位增长到的十进制数字,小数点后保留的位数。
   exclude: /(node_module)/, // 默认false,可以(reg)利用正则表达式排除某些文件夹的方法
  })
  ]
 }
 }
})

大体也是一些基本内容:

  • vitePluginImp 是将 antd-mobile 进行按需加载
  • postcss-pxtorem 是配置移动端 px 转换的插件
  • server.proxy 配置项目代理
  • resolve.alias 配置别名,如果需要 vscode 正常识别的话,需要 ts.config 也配置一下
{
 "compilerOptions": {
 "baseUrl": "./",
 "paths": {
  "@/*": [
  "src/*"
  ]
 },
}

其中 antd-mobile 可以自行替换成 antd,包括 postcss 也可以根据自己的喜好替换

通过上述的简单改造,此时已经可以进行正常的小项目开发了。完结撒花!

并且已经在用此配置写了一个简单的 H5 项目,后续随着项目的迭代会逐步完善一下模板。

到此这篇关于Vite搭建React项目的方法步骤的文章就介绍到这了,更多相关Vite搭建React项目内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • React Router 如何使用history跳转的实现

    在react-router中组件里面的跳转可以用<Link> 但是在组件外面改如何跳转,需要用到react路由的history replace方法和push方法使用形式一样,replace的作用是取代当前历史记录 go,此方法用来前进或者倒退,history.go(-1); goBack,此方法用来回退,history.goBack(); goForward,此方法用来前进,history.goForward(); 1.hook import {useHistory} from 'react-

  • React+Ant Design开发环境搭建的实现步骤

    基础知识 1.使用脚手架创建项目并启动 1.1 安装脚手架: npm install -g create-react-app 1.2 使用脚手架创建项目: create-react-app antd-start-demo antd-start-demo为项目名. 1.3 启动 npm start 2.npm转换为yarn 2.1 安装yarn: npm install -g yarn ​ 2.2 获取yarn当前的镜像源: yarn config get registry ​ 2.3 设置为淘宝

  • 简单分析React中的EffectList

    React中,会遍历EffectList来执行节点操作.生命周期方法.Effect方法,可以把EffectList比作圣诞树上挂的彩灯,而这颗圣诞树就是Fiber树. 为什么会存在EffectList呢?打个比方来说,一颗Fiber树中有一些Fiber节点需要执行componentDidMount方法,如果在Fiber树构建完成后,再遍历一次Fiber树,找到需要执行componentDidMount方法的Fiber节点,这是非常低效的. 而EffectList就解决了这个问题,在Fiber树构

  • react获取input输入框的值的方法示例

    react 获取input 输入框的值的多种方式 第一种方式 非受控组件获取 第二种方式 受控组件获取 非受控组件获取 ref import React , {Component} from 'react'; export default class App extends Component{ search(){ const inpVal = this.input.value; console.log(inpVal); } render(){ return( <div> <input

  • 使用hooks写React组件需要注意的5个地方

    Hook是React16.8开始新增的特性.虽然React官方文档已经作出了针对React hooks的相关概念的讲解,但是光看官方文档是很难将hooks使用好的,在编写hooks的过程中很容易跳进陷阱和错误.本文总结了5个不好的地方. 01.不需要render的场景下使用useState 在函数组件中我们可以使用useState来管理状态,这使得对状态的管理变得很简单,但是也容易被滥用,我们通过下面的代码样例看下容易忽略的地方. 不推荐× function ClickButton(props)

  • 使用 React 和 Threejs 创建一个VR全景项目的过程详解

    最近我在学习使用 React 配合 Three.js 来搭建一个可以浏览720全景图片的项目 实现的是加载一张 2:1 的720全景 分享一下我的创建过程 一.搭建框架并安装需要的插件 npx create-react-app parano // 创建一个 React 项目 npm install -S typescript // 安装 typescript,这个是类型辅助插件,与全景项目关系不大 npm install -S @types/three // 安装 typescript 支持的

  • react实现Radio组件的示例代码

    本文旨在用最清楚的结构去实现一些组件的基本功能.希望和大家一起学习,共同进步 效果展示: 测试组件: class Test extends Component { constructor(props) { super(props) this.state = { active:1 } } onGroupChange(value) { this.setState({ active: value }) } render() { return ( <div> <RadioGroup onChan

  • react hooks入门详细教程

    State Hooks 案例: import { useState } from 'react'; function Example() { const [count, setCount] = useState(0); //count:声明的变量:setCount:改变count值的函数:0:count的初始值 return ( <div> <p>You clicked {count} times</p> <button onClick={() => set

  • 聊一聊我对 React Context 的理解以及应用

    前言 Context被翻译为上下文,在编程领域,这是一个经常会接触到的概念,React中也有. 在React的官方文档中,Context被归类为高级部分(Advanced),属于React的高级API,但官方并不建议在稳定版的App中使用Context. The vast majority of applications do not need to use content. If you want your application to be stable, don't use context

  • Vite搭建React项目的方法步骤

    前言 日常放鸽,火钳刘明 这是一个基于 vite 搭建的 React 的项目,开发体验非常棒. 创建一个 Vite 项目 yarn create @vitejs/app 如上图,选择了 react-ts 预设模板,如果出现下图一样的工程 yarn // 安装依赖 yarn dev // 启动开发环境 打开浏览器输入http://localhost:3000/#/,如上图所示的话.那么恭喜你,你可以正常开发 React 项目了.完结撒花 如果不行的话,直接看 vite 官网,它比我写的详细 改造工

  • Maven搭建springboot项目的方法步骤

    Maven搭建springboot项目 本文是基于Windows 10系统环境,使用Maven搭建springboot项目 Windows 10 apache-maven-3.6.0 IntelliJ IDEA 2018.3.4 x64 一.springboot项目搭建 (1) 新建目录 在某个可用目录下,新建一个文件夹,本文新建目录为 D:\demo\zs200 (2) 创建maven父工程zs200a-parent 填写项目maven坐标 填写项目名称和路径 (2) maven父工程zs20

  • Visual Studio Code搭建django项目的方法步骤

    之前我们使用VSCode搭建C#项目,今天写一篇关于django项目的搭建,其实以其说是搭建django框架,不如说是如何通过vscode开发django项目:django官网:https://www.djangoproject.com/ 安装django django安装命令:pip install django,参考:https://docs.djangoproject.com/en/3.0/topics/install/ 查看django的安装版本:python -m django --v

  • 基于webpack4.X从零搭建React脚手架的方法步骤

    项目初始化 $ npm init 安装webpack 本次创建是基于webpack4 $ npm install --save-dev 新建webpack配置文件 在根目录创建build文件夹,添加一个js文件,命名为webpack.base.conf.js // webpack.base.conf.js 文件 const path = require('path'); const DIST_PATH = path.resolve(__dirname, '../dist'); module.ex

  • IDEA+Maven搭建JavaWeb项目的方法步骤

    目录 前言 1. 项目搭建 2. 配置项目 添加web部署的插件 3. 项目运行 使用Tomact插件运行项目 4. 注意事项 前言 本章节主要内容是描述如何使用maven构建javaweb项目 Maven依赖仓库: https://mvnrepository.com/ Tomcat7插件的命令: https://tomcat.apache.org/maven-plugin-trunk/tomcat7-maven-plugin/plugin-info.html 1. 项目搭建 选择maven模板

  • jenkins分环境部署vue/react项目的方法步骤

    vue/react部署请参考上一篇文章:https://www.jb51.net/article/238583.htm 项目开发正常都需要开发环境.测试环境.生产环境,每个环境部署都比较麻烦,可以使用jenkins自动化部署 1.安装自定义参数化插件 Extended Choice Parameter Plug-In 2.配置自定义参数 3.配置shell脚本 shell脚本内容 #!/bin/bash // 判断环境 if [ $env == "dev" ]; then url=&q

  • 使用Jenkins部署React项目的方法步骤

    背景 公司的前端项目部署方式比较简单,整个过程基本上是手动的: 目标 通过工具实现以下几个任务: 编译.部署自动化: 选择指定版本进行回滚: 区分不同的分支(环境): 技术方案 选用 jenkins 作为部署工具:也便于后续 CI 的接入: 使用 docker 进行编译,确保每次编译的环境的稳定: 步骤 步骤一:搭建 Jenkins 搭建 Jenkins 有很多方案,这里选择使用 docker 搭建. docker-compose.yml 的内容如下: version: '3' services

  • Intellij IDEA搭建vue-cli项目的方法步骤

    1.安装/升级node环境 vue-cli对于node和npm的版本是有要求的. 可以通过 node -v (npm -v)查看当前版本,通过 where node (where npm)查看安装路径. 如果node版本不符合vue-cli的要求,那么可以在node官网下载稳定版本并安装. 安装过程比较简单,我更新时,除了修改安装路径,其他都是一直Next即可. 这里要提到一点,更新node版本后,查看版本,会发现npm的版本也已经更新了. D:\workspace\MyProject\Jan2

  • 9102年webpack4搭建vue项目的方法步骤

    前言 首先祝大家元宵节快乐,最近已经好久没有写过文章了,刚好趁着这几天刚刚上班,领导还没有来,偷偷的写一篇关于webpack搭建vue的博客.因为公司使用vue比较多,构建vue项目使用vue-cli显得有点臃肿,感觉还是自己配置比较好些,所以就有了这篇教程.由于水平有限,欢迎大家指正,一起进步. 新建项目 1.新建名为webpackconfig文件夹 2.使用命令 npm init -y 在webpackconfig文件夹中生成package.josn 3.下载依赖包 npm i webpac

  • 使用vue-cli4.0快速搭建一个项目的方法步骤

    前言 最近公司的项目终于到了空闲期,而闲不住的我终于把目标放到了项目的迁移上面 因为公司的项目比较早的原因(虽然当时vue-cli也出来了一段时间,但是不敢轻易尝试啊!) 所以使用的环境还是 vue2.x 版本的,而又因为公司的前端项目都是我来搭建的原因(并不是技术大佬,入职早!) 所以所有项目开发的时候一直在用的 vue-cli2.0,后来项目多了也没时间就没往 vue-cli3.0 迁移 现在终于到了空闲期,可以尝试着慢慢迁移了 本篇文章就是主要记录迁移的过程和 vue-cli3.0 的搭建

随机推荐