从0到1使用vite搭建react项目保姆级教程(持续更新中)

一、vite创建react项目

要使用Vite创建一个React项目,你需要按照以下步骤操作:

1、确保你已经安装了Node.js(建议使用最新的稳定版本)。
2、 使用npm命令安装Vite CLI工具,再来创建项目
npm create vite@latest my-vite-app 
3、运行上述命令后,按照提示选择“create-react-app”模板创建项目。
4、输入项目名称,例如“my-react-app”。
5、选择需要的选项,例如选择JavaScript或TypeScript作为项目的编程语言。

SWC是JavaScript编译工具比Babel要快,但是在功能和插件生态系统方面Babel更完善

6、等待依赖安装完毕。

以下是一个简单的命令行示例:

npm create vite@latest my-vite-app 
# 选择默认模板 'create-react-app'
# 输入项目名称,例如 'my-react-app'
# 选择一个JavaScript框架,或者TypeScript
7、安装完成后,你可以通过以下命令启动开发服务器:
cd my-react-app
npm install 安装package.json中的依赖包
npm run dev
8、现在,你应该拥有一个使用Vite创建并且配置了React的新项目。

9、vite相关命令
vite [root]:启动开发服务器,可以指定一个根目录(可选)。
build [root]:构建生产环境的应用程序,可以指定一个根目录(可选)。
optimize [root]:预打包依赖项,用于优化构建性能。
preview [root]:本地预览生产环境的构建结果,可以指定一个根目录(可选)。
--open:启动开发服务器后自动打开默认浏览器并访问应用程序
--cors:启用 CORS(跨域资源共享)。
--strictPort:如果指定的端口已被占用,则退出。
--force:强制优化器忽略缓存并重新打包。
-c, --config <file>:使用指定的配置文件。
--base <path>:设置公共基础路径,默认为 /。
-l, --logLevel <level>:设置日志级别,可选值为 info、warn、error、silent。
--clearScreen:允许或禁用日志时的清屏操作。
-d, --debug [feat]:显示调试日志,可选参数为特定功能的名称。
-f, --filter <filter>:过滤调试日志的输出。
-m, --mode <mode>:设置环境模式。
-h, --help:显示帮助信息。
-v, --version:显示版本号。

二、集成开发需要的各种插件

项目搭建之后,我们就开始安装项目所需要的各种插件了:

1、集成vant的react版本组件库(以此为例)

# 通过 npm 安装

npm i react-vant -S

安装完成之后我们可以看到package.json中多了  "react-vant": "^3.3.5", 即表示安装完成

如何使用vant 中的组件呢, 官方文档地址https://react-vant.3lang.dev/guide/quickstart

引入即可:

import { Uploader,Toast  } from 'react-vant';

具体组件的详细用法参考官方文档组件即可

2、集成less
npm install less -Dnpm install less-loader -D

安装好了之后就可以了

3、集成路由并配置

npm install react-router-dom -S

安装好之后,入口App.tsx


import './App.css'
import * as React from 'react'
import RootRouter from "./router.jsx"
import {BrowserRouter} from 'react-router-dom' 
function App() {return (<BrowserRouter><RootRouter/></BrowserRouter>)
}
export default App

router.jsx页面

import * as React from 'react'
import {Routes,Route} from 'react-router-dom'
import Home from "./pages/index"
import User from './pages/user'
import Created from './pages/Created'
import Complete from './pages/Complete'function Router() {return (<Routes><Route path="/" element={<Home />} /><Route path="/user" element={<User />} /><Route path="/created" element={<Created />} /><Route path="/complete" element={<Complete />} /></Routes>);
}export default Router;

4、集成redux,状态管理

5、国际化配置

三、react语法

1、基础语法参考文档:React 官方中文文档

2、react进阶 内置Hook 

Hook 可以帮助在组件中使用不同的 React 功能。你可以使用内置的 Hook 或使用自定义 Hook。本页列出了 React 中所有内置 Hook

React 内置 Hook – React 中文文档

示例:useState Hook

import * as React from 'react'
import {useState} from 'react'function UserPage() {const navigateTo  = useNavigate();const [account, setAccount] = useState('some-account-value');  const [columns, setColumns] = useState([/* ...初始的列数据... */]); return (<div></div>)}

四、QA:问答

1、类型“JSX.IntrinsicElements”上不存在属性“div”?

react使用ts 内部组件如果是div a标签这种html标签ts会报错
类型“JSX.IntrinsicElements”上不存在属性“div”
这种本来就不是自定义组件的标准html标签怎么取消这种ts报错呢,或者怎么告诉ts这就是标准html标签

解决方案:

配置下tsconfig.json文件
"compilerOptions":{

"jsx": "react",

},

2、提示 useRoutes() may be used only in the context of a <Router> component.

需要在外面包一层 <BrowserRouter>

3 、vite创建的项目不支持require,会提示require未定义

解决方案:前端有很多工具包是commonjs的写法,只能用require引入,为了vite构建的项目也可以方便的引入commojnjs包,需要把这些工具包转换为es module

(1)安装 vite-plugin-commonjs插件

npm i vite-plugin-commonjs

(2)在vite.config.js中添加该插件,注意commonjs()必须在react()上面,否则不生效,打包的时候也需要配置一下,把require转换一下

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import commonjs from 'vite-plugin-commonjs';// https://vitejs.dev/config/
export default defineConfig({plugins: [commonjs(),react()],build: {commonjsOptions: {transformMixedEsModules: true}}
})

未完待续,后续react相关问题会长期记录在本博客下~~

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

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

相关文章

解决ChatGPT遇到“抱歉,我无法完成你的请求”问题

在使用ChatGPT时&#xff0c;可能会遇到这样的问题&#xff1a;当多次重复输入相同的内容时&#xff0c;系统会返回 抱歉&#xff0c;我无法完成你的请求 。本文将解释为什么会出现这种情况&#xff0c;并提供一些避免这种情况的解决方法。 为什么会出现“抱歉&#xff0c;我…

JAVA中的内存泄漏和内存溢出

内存溢出&#xff08;OutOfMemoryError&#xff09; 内存溢出通常在 JVM 无法分配足够的内存给对象时发生。这可能是因为应用程序需要的内存超过了 JVM 可用的最大内存&#xff0c;也可能是因为存在过多的活动对象导致内存耗尽。 示例&#xff1a; public class OutOfMemory…

TSLANet:时间序列模型的新构思

实时了解业内动态&#xff0c;论文是最好的桥梁&#xff0c;专栏精选论文重点解读热点论文&#xff0c;围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;…

2024-6-20 Windows AndroidStudio SDK(首次加载)基础配置,SDK选项无法勾选,以及下载失败的一些解决方法

2024-6-20 Windows AndroidStudio SDK(首次加载)基础配置,SDK选项无法勾选,以及下载失败的一些解决方法 注意:仅仅是SDK这种刚安装时的配置的下载,不要和开源库的镜像源扯到一起&#xff01;&#xff01;&#xff01;&#xff01; 最近想玩AndroidStudio的JNI开发, 想着安装后…

Java三层框架的解析

引言&#xff1a;欢迎各位点击收看本篇博客&#xff0c;在历经很多的艰辛&#xff0c;我也是成功由小白浅浅进入了入门行列&#xff0c;也是收货到很多的知识&#xff0c;每次看黑马的JavaWeb课程视频&#xff0c;才使一个小菜鸡见识到了Java前后端是如何进行交互访问的&#x…

准确率(accuracy)、召回率(recall)的意义和区别

准确率&#xff08;accuracy&#xff09;、召回率&#xff08;recall&#xff09;的意义和区别 对于准确率和召回率&#xff1a;一句话&#xff0c;准确率就是“找的对”&#xff0c;召回率就是“找的全” &#xff08;精确率&#xff1a;正样本中找对的准确率&#xff09; 注…

深入理解外观模式(Facade Pattern)及其实际应用

引言 在软件开发中&#xff0c;复杂的系统往往由多个子系统组成&#xff0c;这些子系统之间的交互可能非常复杂。外观模式&#xff08;Facade Pattern&#xff09;通过为这些子系统提供一个统一的接口&#xff0c;简化了它们的交互。本篇文章将详细介绍外观模式的概念、应用场…

项目实训-vue(十二)

项目实训-vue&#xff08;十二&#xff09; 文章目录 项目实训-vue&#xff08;十二&#xff09;1.概述2.处理进度可视化 1.概述 本篇博客将记录我在图片上传页面中的工作。 2.处理进度可视化 除了导航栏之外&#xff0c;我们还需要对上传图片以及图片处理的过程以及流程进行…

数据结构-----【链表:刷题】

-------------------------------------------基础题参照leetcode---------------------------------------------------------------------------------------------------------- 【2】两数相加 /*** Definition for singly-linked list.* struct ListNode {* int val;…

浦语·灵笔2 模型部署图片理解实战

效果图镇楼 1、使用 huggingface_hub 下载模型中的部分文件&#xff08;演示练习与模型实战无关&#xff09; 使用 Hugging Face 官方提供的 huggingface-cli 命令行工具。安装依赖: pip install -U huggingface_hub 然后新建 python 文件&#xff0c;填入以下代码&#xf…

upload-labs第14关

upload-labs第14关 第十四关一、源代码分析代码审计 二、绕过分析a. 制作图片码首先需要一个照片&#xff0c;然后其次需要一个eval.php。 b.上传图片码上传成功 c.结合文件包含漏洞进行访问访问&#xff1a;http://192.168.1.110/upload-labs-master/include.php?filehttp://…

封装了一个iOS联动滚动效果

效果图 实现逻辑和原理 就是在 didEndDisplayingCell 方法中通过indexPathsForVisibleItems 接口获取当前可见的cell对应的indexPath&#xff0c; 然后获取到item最小的那一个&#xff0c;即可&#xff0c;同时&#xff0c;还要在 willDisplayCell 方法中直接设置标题的选中属…

【杂记-OSI参考模型之传输层】

OSI参考模型之传输层 一、传输层概述二、传输层工作原理1、分段与重组2、端口号的使用3、连接控制4、流量控制与拥塞控制5、差错检测 一、传输层概述 传输层作为网络通信模型中的关键层次&#xff0c;主要负责提供端到端的通信服务&#xff0c;是网络通信的核心环节。它不仅确…

cropperjs 裁剪/框选图片

1.效果 2.使用组件 <!-- 父级 --><Cropper ref"cropperRef" :imgUrl"url" searchImg"searchImg"></Cropper>3.封装组件 <template><el-dialog :title"title" :visible.sync"dialogVisible" wi…

新人学习笔记之(标识符和键盘录入)

一、标识符 1.标识符是&#xff1a;代码中所有我们自己起的名字&#xff0c;比如变量名、函数名等。 2.命名规则---硬性要求 由数字、字母、下划线(_)组成 不能以数字开头 不能是关键字 区分大小写 3.命名规则---软性要求 用英文单词&#xff0c;见名知意 变量名&#xff1a;全…

Steam怎么卸载DLC Steam怎么只卸载DLC不卸载游戏教程

我们玩家在steam中玩游戏&#xff0c;有一个功能特别重要&#xff0c;那就是DLC&#xff0c;其实也就是一款游戏的扩展&#xff0c;很多游戏都有DLC&#xff0c;让游戏玩法特别丰富&#xff0c;比如都市天际线的DLC&#xff0c;给城市中就增加了很多建筑&#xff0c;或者更便捷…

web前端——CSS

目录 一、css概述 二、基本语法 1.行内样式表 2.内嵌样式表 3.外部样式表 4.三者对比 三、选择器 1.常用的选择器 2. 选择器优先级 3.由高到低优先级排序 四、文本,背景,列表,伪类,透明 1.文本 2.背景 3.列表 4.伪类 5.透明 五、块级,行级,行级块标签, dis…

TikTok达人背后的品牌影响力与用户增长

TikTok独特的算法和广泛的用户基础&#xff0c;使得品牌在TikTok上的推广活动变得尤为重要。在这种背景下&#xff0c;TikTok达人合作成为品牌推广、用户增长和社交影响力的重要工具。本文Nox聚星将和大家探讨TikTok达人合作在这些方面的作用。 一、对品牌推广的作用 1. 增加…

前端科举八股文-性能优化篇

前端科举八股文-性能优化篇 常见的前端性能优化方案&#xff1f;css精灵图的原理&#xff1f;说说懒加载的原理什么是防抖节流&#xff1f;什么是重绘和重排&#xff0c;如何减少重绘和重排如何减少重排&#xff1f;webpack是干什么的&#xff1f;简历上写到你使用了vite&#…