• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
Luminous★
帮助1

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="https://blog.csdn.net/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的导入问题以及其他技术问题,可能会产生其他的问题,楼主在这就不详细往出细说了。遇到这些问题的话,就需要大家亲自去解决一下。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfiehba
系列文章
更多 icon
同类精品
更多 icon
继续加载