webpack搭建的React脚手架项目与vite进行兼容化开发

news2024/9/29 11:33:15

React项目兼容vite开发

问题描述

前言:之前在做Vue开发项目的过程中,是使用vite搭建的项目,不论是启动速度还是热更新,都非常的丝滑,可以极大弥补我电脑的短板,也提升了我的开发体验!

由于电脑是大一上学的时候买的,在时间以及本人的摧残下,确实在性能方面与最新款的电脑无法媲美;而且在开发的时候非常的不友好。跑一个项目电脑得跑5分钟左右,甚至更高,简直拉跨至极!

最近做react项目,当项目逐渐庞大之后,发现采用webpack搭建的React脚手架,启动非常慢(核心主要是电脑也不太行了),从而导致每次跑项目都难受的不行。所以今天就尝试着在webpack搭建的React脚手架项目当中兼容一下vite,从而提升项目启动的丝滑度。

需要什么?

首先,你的项目是使用React脚手架去创建的,此时你的需求是需要借助vite来提升项目的启动速度,而且,为了不破坏之前的webpack的环境,两者需要进行兼容,换句话讲,就是项目既可以使用webpack去启动开发,也可以使用vite。

具体操作流程如下

1. 安装vite以及vite支持react的模板插件
	npm i vite @vitejs/plugin-react -D
2. 在项目的根目录中添加vite.config.js文件
	import { defineConfig } from 'vite';
	import react from '@vitejs/plugin-react';
	import { resolve } from 'path';
	 
	export default defineConfig({
	  plugins: [
	  	react()
	  ],
	  resolve: {
	    alias: {
	      '@': resolve('src'),
	    },
	  },
	});
	
3.  由于webpack与vite对与index.html文件的存放位置不同,
	所以需要将之前public当中的index.html文件重新copy一份
	到你的项目根目录;

	注意:以下几个细节需要改一下
		1.  需要将用到 %PUBLIC_URL% 的地方,将 %PUBLIC_URL% 去掉,否则在后续流程中vite将会编译不通过
			[vite] Internal server error: URI malformed
			会报出这个错误
		2.  创建 root 容器
		3. 将之前的项目入口文件引入
			<script type="module" src="/src/index.js"></script>
4. 额外配置package.json的scrips脚本
	"dev": "vite"

在配置完上面的操作之后,此时项目在启动的时候还会遇到一个问题,就是项目无法编译jsx,
The esbuild loader for this file is currently set to “js” but it must be set to “jsx” to be able to parse JSX syntax. You can use “loader: { ‘.js’: ‘jsx’ }” to do that.
会报出上面的错误导致页面无法加载。

解决方案
首先,这块需要用到一个插件,

npm i @babel/plugin-transform-react-jsx -D

安装完以后,需要在vite.config.js当中去配置一下

plugins: [
    react({
      babel: {
        plugins: ['@babel/plugin-transform-react-jsx']
      },
    })
  ],

到现在,就可以去采用vite启动你的React项目了。

此时启动项目的时候,楼主还遇到一个问题,就是我在配置菜单栏的时候引用了antd的icon的组件,然后webpack可以正常运行,vite搭建的会报一个错误
ReferenceError: React is not defined
at index.js:18:11
在这里插入图片描述
这个时候,需要在这个文件当中将React导入,就解决了。

import React from 'react';

以上只是在不依赖其他额外的技术栈上最简化的将webpack与vite进行兼容开发,如果使用一些antd按需加载或者是postcss或者是commonjs与es6的导入问题以及其他技术问题,可能会产生其他的问题,楼主在这就不详细往出细说了。遇到这些问题的话,就需要大家亲自去解决一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

马帮对接打通金蝶云星空订单

马帮对接打通金蝶云星空获取订单列表接口与销售出库新增接口接入系统&#xff1a;马帮马帮ERP旗下有马帮ERP3.0、马帮ERP亚马逊专用版、马帮WMS仓储管理系统、马帮云仓、马帮TMS、跨境分销、马帮供应链SCM管理系统等产品&#xff0c;为跨境电商卖家提供高效管理方法和解决方案&…

【操作系统】—— 如何使用VMware虚拟机(带你快速了解)

&#x1f4dc; “作者 久绊A” 专注记录自己所整理的Java、web、sql等&#xff0c;IT技术干货、学习经验、面试资料、刷题记录&#xff0c;以及遇到的问题和解决方案&#xff0c;记录自己成长的点滴。 &#x1f341; 操作系统【带你快速了解】对于电脑来说&#xff0c;如果说…

java多态/类的组合2022023

多态 Java引用变量有两个类型&#xff1a;一个是编译时类型&#xff0c;一个是运行时类型。编译时类型由声明该变量时使用的类型决定&#xff0c;运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致&#xff0c;就可能出现所谓的多态&#xff08;Polymor…

LeetCode刷题复盘笔记—一文搞懂贪心算法之55. 跳跃游戏问题(贪心算法系列第四篇)

今日主要总结一下可以使用贪心算法解决的一道题目&#xff0c;55. 跳跃游戏 题目&#xff1a;55. 跳跃游戏 Leetcode题目地址 题目描述&#xff1a; 给定一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长…

Python流程控制语句之选择语句

前言 在生活中&#xff0c;我们总是要做出许多选择&#xff0c;程序也是一样。比如下面的例子&#xff1a; 如果输入的用户名和密码正确&#xff0c;提示登录成功&#xff0c;否则&#xff0c;提示登录失败。如果考试成绩大于等于60分&#xff0c;则及格&#xff0c;否则不及…

在甲骨文云容器实例(Container Instances)上部署firefox

甲骨文云推出了容器实例&#xff0c;这是一项无服务器计算服务&#xff0c;可以即时运行容器&#xff0c;而无需管理任何服务器。 今天我们尝试一下通过容器实例部署firefox。 Step1. 创建容器实例 在甲骨文容器实例页面&#xff0c;单击"创建容器实例"&#xff0c…

[漏洞分析] CVE-2022-2602 io_uring UAF内核提权详细解析

本文首发于华为安全应急响应中心公众号&#xff1a; https://mp.weixin.qq.com/s/w_u0FoiFdU0KM397UXJojw 文章目录漏洞简介环境搭建漏洞原理文件引用计数与飞行计数引用计数飞行计数发送过程scm_send接收过程unix_gc垃圾处理机制io_uring原理(仅限漏洞)io_uring_setupio_urin…

零基础学JavaWeb开发(十六)之 mybatis(2)

5、MyBatis - 映射文件标签 5.1、映射文件的顶级元素 select&#xff1a;映射查询语句 insert&#xff1a;映射插入语句 update&#xff1a;映射更新语句 delete&#xff1a;映射删除语句 sql&#xff1a;可以重用的 sql 代码块 resultMap&#xff1a;最复杂&#xff0c…

11. 集合set类型详解

python3 set类型的使用 1. 基础知识 &#xff08;1&#xff09; 集合&#xff08;set&#xff09;是由一个或数个形态各异的大小整体组成的&#xff0c;构成集合的事物或对象称作元素或是成员。集合是一个无序的不重复元素序列。 &#xff08;2&#xff09;基本功能是进行成员…

大年初四,Flutter Forward 中国社区直播活动与你不见不散

之前我们预告过&#xff0c;2023 年 1 月 25 日 (年初四)&#xff0c;Flutter 团队将在肯尼亚首都内罗毕举办 Flutter Forward 大会&#xff0c;并同时开启线上直播。本次活动将为展示最新的 Flutter 技术更新&#xff0c;包括一个主题演讲&#xff0c;以及多个技术演讲和线上问…

【兔年之兔子走迷宫】 用一个小游戏对回溯法进行实现 | C++

第六章 回溯法 目录 第六章 回溯法 ●前言 ●一、回溯法是什么&#xff1f; 1.简要介绍 ●二、回溯法经典案例——兔子走迷宫游戏 1.具体情况 2.代码展示&#xff08;C&#xff09; 3.结果展示 ●总结 前言 简单的来说&#xff0c;算法就是用计算机程序代码来实…

性能监控和工具使用

1、jvm 内存模型 程序计数器 Program Counter Register&#xff1a;  记录的是正在执行的虚拟机字节码指令的地址&#xff0c;  此内存区域是唯一一个在JAVA虚拟机规范中没有规定任何OutOfMemoryError的区 域  虚拟机&#xff1a;VM Stack  描述的是 JAVA 方法执行的内…

Delphi 中.dproj 文件解析(二、详细解析)

上一篇 介绍了Delphi 的各个版本&#xff0c;本文开始分析.dproj文件。.dproj是一个XML文件&#xff0c;里边包含了我们在Delphi开发环境中对项目设置的所有参数&#xff08;位于IDE&#xff1a;Project -> Options 中&#xff09;&#xff0c;包括并不限于&#xff1a;版本…

LabVIEW查找范例VI

LabVIEW查找范例VILabVIEW拥有数百个范例VI&#xff0c;用户可搜索需要的范例VI并将其整合到自己创建的VI中。除LabVIEW内置的范例VI之外&#xff0c;在ni.com技术支持页中可查看更多的范例VI。用户可根据应用程序的需要对范例进行修改&#xff0c;也可复制并粘贴一个或多个范例…

LC-1824. 最少侧跳次(动态规划)

1824. 最少侧跳次数 难度中等49 给你一个长度为 n 的 3 跑道道路 &#xff0c;它总共包含 n 1 个 点 &#xff0c;编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 &#xff0c;它想要跳到点 n 处。然而道路上可能有一些障碍。 给你一个长度为 n 1 的数组 obstacles &a…

【FPGA】Verilog 实践:狄摩根定律 | 布尔方程 | 1bit 比较器

写在前面&#xff1a;为了解狄摩根定理和布尔函数的行为&#xff0c;我们使用 Verilog 实现狄摩根定律和布尔函数的行为。生成输入信号后&#xff0c;验证通过仿真实现的结果。 Ⅰ. 前置知识 0x00 离散结构&#xff1a;否定量词的狄摩根定律 否定量词的狄摩根定律是&#xf…

基于自适应降噪的深度神经网络对抗图像检测【论文阅读】

近年来&#xff0c;许多研究表明&#xff0c;深度神经网络(DNN)分类器可能会被对抗性示例所欺骗&#xff0c;这种对抗性示例是通过对原始样本引入一些扰动来设计的。据此&#xff0c;提出了一些强大的防御技术。然而&#xff0c;现有的防御技术往往需要修改目标模型或依赖于攻击…

针对容器场景的多功能渗透工具

介绍 CDK是一款为容器环境定制的渗透测试工具&#xff0c;在已攻陷的容器内部提供零依赖的常用命令及PoC/EXP。集成Docker/K8s场景特有的 逃逸、横向移动、持久化利用方式&#xff0c;插件化管理。 下载/植入 将可执行文件投递到已攻入的容器内部开始使用 https://github.c…

浏览器打不开某些网站是什么原因导致,试试用这些方法来解决

不少小伙伴使用一些浏览器浏览网页的时候&#xff0c;发现打不开某些网站&#xff0c;这是什么原因导致的呢?本文讲汇总几个常见的原因&#xff0c;我们可以通过以下几个原因排查&#xff0c;并且使用下文的解决方法可以试试能否打开网站。打不开网站的原因1、浏览器限制如果用…

SpringMVC工作流程

SpringMVC工作流程 1. SpingMVC的常用组件 1&#xff09;DispatcherServlet 是一种前端控制器&#xff0c;由框架提供。作用&#xff1a;统一处理请求和响应。除此之外还是整个流程控制的中心&#xff0c;由 DispatcherServlet 来调用其他组件&#xff0c;处理用户的请求 2&am…