【React】Vite创建React+TS项目

前提条件

有node环境,且node版本>=18.0.0

创建项目

npm create vite@latest

1.起项目名

在这里插入图片描述

2.选择框架在这里插入图片描述

3.选择语言在这里插入图片描述

TypeScript + SWC 是指 Vite 使用 SWC(Speedy Web Compiler)作为 TypeScript 的编译器。

SWC 是一个针对 JavaScript 和 TypeScript 的超快速编译器,相比于传统的 TypeScript 编译器(tsc),SWC 具有更快的编译速度。

SWC 通过利用 Rust 编写的编译器,使用了更先进的优化技术,使得它在处理 TypeScript 代码时能够更快地进行转换和编译。特别是在大型项目中,SWC 相对于传统的 TypeScript 编译器有着更快的性能,特别是在启动项目和进行热模块更新时。

4.依次执行命令,启动项目

在这里插入图片描述
至此项目已初始化完毕

关闭严格模式

建议关闭严格模式,因为不能自动检测副作用,有意双重调用。将严格模式注释即可。

main.ts中

import React from "react"
import ReactDOM from "react-dom/client"
import App from "./App.tsx"
import "./index.scss"ReactDOM.createRoot(document.getElementById("root")!).render(// <React.StrictMode><App />// </React.StrictMode>
)

配置sass

下载

npm install sass

将项目初始化时的index.css文件,修改为.sass后缀后即可书写sass代码。

注意: main.ts中引入样式时,后缀也要修改

import "./index.scss"

vite.config.ts中注册全局样式

// 配置Scss
css: {preprocessorOptions: {scss: {additionalData: `@import "./src/styles/sassConfig";`,},},
},

配置路径别名

安装path

npm i @types/node --save-dev

在 vite.config.ts 中引入path,并声明快捷字符及其对应文件夹,这里以@表示src目录为例,代码如下:

import { defineConfig } from "vite"
import react from "@vitejs/plugin-react-swc"
import { resolve } from "path"export default defineConfig({plugins: [react()],// 配置路径别名resolve: {alias: {"@": resolve(__dirname, "src"),},},
})

此时@已经可以正确读取src目录,但是输入@后,并未出现提示,需要在tsconfig.json文件中声明路径。

在这里插入图片描述
tsconfig.json,注意:这里的字符与目录一定要与vite.config.ts中的配置保持一致。

{"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"lib": ["ES2020", "DOM", "DOM.Iterable"],"module": "ESNext","skipLibCheck": true,"moduleResolution": "bundler","allowImportingTsExtensions": true,"resolveJsonModule": true,"isolatedModules": true,"noEmit": true,"jsx": "react-jsx","strict": true,"noUnusedLocals": true,"noUnusedParameters": true,"noFallthroughCasesInSwitch": true,// 路径别名"baseUrl": ".","paths": {"@/*":["./src/*"]}},"include": ["src"],"references": [{ "path": "./tsconfig.node.json" }]
}

添加后,再次输入@后,编译器会读取src目录下的资源。

在这里插入图片描述

配置路由

配置请求

1. 下载axios及类型声明文件

npm install axios @types/axios

2. 根据需求封装axios

这里以最基本请求举例

// 在项目中创建一个 axios.js 文件import axios from 'axios';const instance = axios.create({baseURL: 'http://api.example.com', // 你的 API 地址timeout: 5000, // 请求超时时间(毫秒)headers: {'Content-Type': 'application/json', // 设置请求头,根据实际情况修改}
});// 请求拦截器
instance.interceptors.request.use(config => {// 在发送请求之前做些什么,比如添加 token 等return config;},error => {// 对请求错误做些什么return Promise.reject(error);}
);// 响应拦截器
instance.interceptors.response.use(response => {// 对响应数据做点什么return response.data;},error => {// 对响应错误做点什么return Promise.reject(error);}
);export default instance;

3. 解决跨域

首先在项目根目录下创建三个文件,分别对应全局环境、开发环境、生产环境。

在这里插入图片描述
.env

NODE_ENV = envVITE_NAME = '全局环境'
VITE_API_URL=''

.env.development

NODE_ENV = developmentVITE_NAME = '开发环境'
VITE_API_URL='/api'
VITE_TARGET ='http://.....'

.env.production

NODE_ENV = productionVITE_NAME = '生产环境'
VITE_API_URL = ''
VITE_TARGET ='https://xxx.com/'

vite.config.ts中配置跨域

import react from "@vitejs/plugin-react-swc"
import { defineConfig, loadEnv } from "vite"export default defineConfig(({ mode }) => {const config = loadEnv(mode, "./")return {plugins: [react()],// 配置跨域server: {port: 8888,host: "192.168.31.207",proxy: {"/api": {target: config.VITE_TARGET,  // 会自动判断当前环境,对应上述三个文件中的targetchangeOrigin: true,rewrite: (path) => path.replace(/^\/api/, ""),},},},}
})

配置Antd

1. 安装

官方地址

// npm
npm install antd --save
// yarn
yarn add antd
// pnpm
pnpm install antd --save

2. 下载icon

官方地址

// npm
npm install @ant-design/icons --save
// yarn
yarn add @ant-design/icons
// pnpm
pnpm install @ant-design/icons --save

3. 国际化

下载完毕后,默认语言为英文,需要在main.ts中注入并配置antd

import ReactDOM from "react-dom/client"
import App from "./App.tsx"
import "./index.scss"
// antd部分
import { ConfigProvider } from "antd"
import "dayjs/locale/zh-cn"
import zhCN from "antd/locale/zh_CN"ReactDOM.createRoot(document.getElementById("root")!).render(<ConfigProvider locale={zhCN}><App /></ConfigProvider>
)

4.定制主题

可以更改组件默认样式,创建配置文件如下,具体请查阅官方文档

export default {components: {Button: {colorPrimary: "#205fd4",  // 改变Button的type为primary时的颜色},},
}

在main.ts中注册自定义theme文件

import theme from "@/config/antdTheme" // 自定义theme文件ReactDOM.createRoot(document.getElementById("root")!).render(<ConfigProvider theme={theme}><App /></ConfigProvider>
)

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

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

相关文章

客服销冠偷偷用的提效神器!无广很实用

近期发现我的同事每天上班必登录的一款软件——客服宝聊天助手&#xff0c;用过才发现&#xff1a;真客服办公的提效神器&#xff01;感兴趣的小伙伴请往下看~一、客服宝的简介&#xff1a;客服宝聊天助手&#xff0c;是一款跨平台快捷回复工具。自带多种功能&#xff0c;有效帮…

Python接口自动化测试post请求和get请求,获取请求返回值

引言 我们在做python接口自动化测试时&#xff0c;接口的请求方法有get,post等&#xff1b;get和post请求传参&#xff0c;和获取接口响应数据的方法&#xff1b; 请求接口为Post时&#xff0c;传参方法 我们在使用python中requests库做接口测试时&#xff0c;在做post接口测试…

C语言练习题【复试准备】

1、BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi&#xff0c;转换以下ASCII码为对应字符并输出他们。 //73,32,99,97,110,32,100,111,32,105,116,33 int main() {int arr[] {73,32,99,97,110,32,100,111,32,105,116,33};int i …

备战2024年汉字小达人活动:历年区级样题练习和解析(续)

今天我们继续来看汉字小达人活动的区级样题。区级样题是中文自修杂志社&#xff08;主办方&#xff09;发布的试题&#xff0c;主要是给学校老师选拔参考使用的&#xff0c;据了解&#xff0c;很多学校老师是直接用这个样卷在学校组织选拔&#xff0c;选拔成绩突出的同学报给主…

Pytorch学习 day10(L1Loss、MSELoss、交叉熵Loss、反向传播)

Loss loss的作用如下&#xff1a; 计算实际输出和真实值之间的差距为我们更新模型提供一定的依据&#xff08;反向传播&#xff09; L1Loss 绝对值损失函数&#xff1a;在每一个batch_size内&#xff0c;求每个输入x和标签y的差的绝对值&#xff0c;最后返回他们平均值 M…

Kafka配置SASL_PLAINTEXT权限。常用操作命令,创建用户,topic授权

查看已经创建的topic ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list 创建topic 创建分区和副本数为1的topic ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --topic acltest --partitions 1 --replication-factor 1 创建kafka用户 …

HTML静态网页成品作业(HTML+CSS+JS)——迪士尼公主介绍(6个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;使用Javacsript代码&#xff0c;共有6个页面。 二、作品演示 三、代码…

基于单片机的酒精浓度测试仪

摘 要 现如今&#xff0c;人们对生活的态度和生活方式变得不同,&#xff0c;不仅私家车成为了人们最普遍的交通工具&#xff0c;大多数人都有自己的私家车,而且人们对酒精的消耗量也越来越大&#xff0c;这些就导致酒后驾车行为越来越普遍&#xff0c;酒后驾车意外越来越频繁&…

【深度学习笔记】10_10 束搜索beam-search

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 10.10 束搜索 上一节介绍了如何训练输入和输出均为不定长序列的编码器—解码器。本节我们介绍如何使用编码器—解码器来预测不定长的序…

3dmax2020模型显示黑白不稳定---模大狮模型网

如果在3ds Max 2020中显示的模型出现黑白不稳定的情况&#xff0c;可能有几个常见原因和解决方法&#xff1a; 显卡驱动问题&#xff1a; 首先检查你的显卡驱动程序是否是最新版本。过时或不兼容的显卡驱动可能导致显示问题。建议更新到最新的显卡驱动程序&#xff0c;并确保其…

YOLOv9(3):YOLOv9损失(Loss)计算

1. 写在前面 YOLOv9的Loss计算与YOLOv8如出一辙&#xff0c;仅存在略微的差异。多说一句&#xff0c;数据的预处理和导入方式都是一样的。因此如果你已经对YOLOv8了解的比较透彻&#xff0c;那么对于YOLOv9你也只是需要多关注网络结构就可以。 YOLOv9本身也是Anchor-Free的&a…

编译esp32s3的ncnn,并运行mnist 手写数字识别

东哥科技&#xff0c;专注科技研发&#xff0c;wx交流&#xff1a;dg_i688 我的项目代码 https://github.com/cdmstrong/ncnn_on_esp32s3 下载ncnn git clone https://github.com/Tencent/ncnn.git安装idf 环境 这里直接按官网的可执行文件来就好了&#xff0c;直接安装完…

[mysql必备面试题]-mysql索引(B+ Tree )

一 B Tree 原理 1. 数据结构 B Tree 指的是 Balance Tree&#xff0c;也就是平衡树。平衡树是一颗查找树&#xff0c;并且所有叶子节点位于同一层。 B Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现&#xff0c;它具有 B Tree 的平衡性&#xff0c;并且通过顺序访问指针…

【python中处理日期和时间二】扩展内容datetime模块-pytz模块-dateutil模块

扩展内容&#xff1a;日期和时间 datetime模块&#xff1b;pytz模块&#xff1b;dateutil模块 一、 datetime模块 查看datetime模块函数&#xff1a; >>> import datetime >>> dir(datetime) [MAXYEAR, MINYEAR, UTC, __all__, __builtins__, __cached__…

2024最新国内外低代码平台大全

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

python面向对象的三大特性:封装,继承,多态

1、面向对象有哪些特性 三种&#xff1a;封装性、继承性、多态性 2、Python中的封装 在Python代码中&#xff0c;封装有两层含义&#xff1a; ① 把现实世界中的主体中的属性和方法书写到类的里面的操作即为封装 ② 封装可以为属性和方法添加为私有权限&#xff0c;不能直…

数据泄露态势(2024年2月)

监控说明&#xff1a;以下数据由零零信安0.zone安全开源情报系统提供&#xff0c;该系统监控范围包括约10万个明网、深网、暗网、匿名社交社群威胁源。在进行抽样事件分析时&#xff0c;涉及到我国的数据不会选取任何政府、安全与公共事务的事件进行分析。如遇到影响较大的伪造…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的安全帽检测系统(深度学习模型+UI界面代码+训练数据集)

摘要&#xff1a;开发先进的安全帽识别系统对提升工作场所的安全性至关重要。本文详细介绍了使用深度学习技术创建此类系统的方法&#xff0c;并分享了完整的实现代码。系统采用了强大的YOLOv8算法&#xff0c;并对其与YOLOv7、YOLOv6、YOLOv5的性能进行了详细比较&#xff0c;…

Windows主机多网卡访问内外网

1&#xff1a;在实际生产环境有可能需要某台机器既能访问公司的内部网络也要能够访问外网。 2&#xff1a;首先机器要有两块网卡根据实际情况分别设置内外网的IP地址&#xff0c;掩码&#xff0c;网关&#xff0c;DNS等信息。设置完成时会出现下面的提示。 3&#xff1a;打开命…

空间计算综合指南

空间计算&#xff08;spatial computing&#xff09;是指使人类能够在三维空间中与计算机交互的一组技术。 该保护伞下的技术包括增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;。 这本综合指南将介绍有关空间计算所需了解的一切。 你将了解 AR、VR…