react+typescript,初始化与项目配置

1,创建项目 npx create-react-app music --template typescript
2,配置项目别名@
npm install @craco/craco@alpha -D
1,最外层与src平级创建 craco.config.jsconst path = require('path')const resolve = (dir) => path.resolve(__dirname, dir)module.exports = {webpack: {alias: {'@': resolve('src'),},},
}2,tsconfig.json的compilerOptions里面添加"baseUrl": ".","paths": {"@/*": ["src/*"]}
3,package.json里面修改"scripts": {"start": "craco start","build": "craco build","test": "craco test","eject": "react-scripts eject"},
3,配置统一的代码风格
// 1,新建 .editorconfig# http://editorconfig.orgroot = true[*] #表示所有文件适用
charset = utf-8 # 设置文件字符集为 utf-8
indent-style = space # 缩进风格 (tab | space)
indent-size = 2 # 缩进大小
end_of_line = 1f # 控制换行类型(lf | cr | crlf)
trim_trailing_whitespace = true # 去除行尾的任意空白字符
insert_final_newline = true # 始终在文件末尾插入一个新行[*.md] # 表示仅 md 文件适用以下规则
max_line_Length = off
trim_trailing_whitespace = false// 2,安装prettiernpm install prettier -D-新建.prettierrc文件useTabs: 使用tab缩进还是空格缩进,选择false;
tabWidth: tab是空格的情况下,是几个空格,选择2个;
printWidth: 当行字符的长度,推荐80,也有人喜欢100或者120:
singleQuote: 使用单引号还是双引号,选择true,使用单引号:.
trailingComma: 在多行输入的尾逗号是否添加,设置为 none,比如对象类型的最后一个属性后面是否加一大
semi: 语句末尾是否要加分号,默认值true,选择false表示不加;{"useTabs": false,"tabWidth":2,"printWidth":80,"singleQuote": true,"trailingComma": "none","semi": false
}

3-1,如果配置上面文件,保存时并没有格式化代码

或者设置里面搜索

4,安装eslint检查代码
npm install eslint -D

 4-1,初始化

npx eslint --init

4-2,安装插件

npm install eslint-plugin-prettier eslint-config-prettier -D

eslint-config.mjs配置

import globals from 'globals'
import pluginJs from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginReact from 'eslint-plugin-react'
import antfu from 'eslint-config-antfu'/** @type {import('eslint').Linter.Config[]} */
export default [antfu,{ files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] },{ languageOptions: { globals: globals.browser } },pluginJs.configs.recommended,...tseslint.configs.recommended,pluginReact.configs.flat.recommended,{rules: {/** 可以出现any类型 */'@typescript-eslint/no-explicit-any': 'off',/** 需要分号 */// semi: ['error', 'always'],/** 可以使用require */'@typescript-eslint/no-require-imports': 'off',eqeqeq: ['error', 'always', { null: 'ignore' }], // 强制用 === 而不是 ==, 除了 == null 是允许的'require-await': 'error', // async 函数内一定要有 await'no-constant-condition': ['error', { checkLoops: false }], // 不允许 if(true),但是 white(true) 可以'@typescript-eslint/no-empty-function': 'warn', // 当函数没有内容时会警示/** 可以用ts-ignore */'@typescript-eslint/ban-ts-comment': 'off',/*** 不检查以下划线开头的 未使用的变量* 包含了参数变量,解构变量,catch中的参数变量*/'@typescript-eslint/no-unused-vars': ['error',{argsIgnorePattern: '^_',caughtErrorsIgnorePattern: '^_',destructuredArrayIgnorePattern: '^_'}],'no-restricted-globals': [// 不允许直接用 global,必须加上 prefix window.setTimeout 这样。'error','localStorage','location','alert','setTimeout','clearTimeout','setInterval','clearInterval','requestAnimationFrame','cancelAnimationFrame','navigator']}},{ignores: ['config/','build/','public/','scripts/','mock/','.vscode/','src/utils/XMLToJson.js','**/*.test.js']}
]
5,目录结构

6,css重置
 npm install normalize.css

index.tsx里面引入import  'normalize.css'

npm install craco-less// craco.config.js
const CracoLessPlugin = require('craco-less');module.exports = {plugins: [{plugin: CracoLessPlugin,options: {// 这里可以配置 Less 的选项,比如全局变量文件等lessLoaderOptions: {lessOptions: {modifyVars: { '@primary-color': '#1DA57A' },javascriptEnabled: true,},},},},],
};
7,路由配置
npm install react-router-dom// 1,index.tsx引入HashRouterimport { HashRouter } from 'react-router-dom'
root.render(<HashRouter><App /></HashRouter>
)// 2,app.tsx添加routerimport { useRoutes } from 'react-router-dom'
import routes from './router/user'
function App() {return <div className="App">{useRoutes(routes)}</div>
}// 3,router文件夹添加路由import { RouteObject } from 'react-router-dom'
import { lazy } from 'react'const User = lazy(() => import('@/views/user')) // 路由懒加载const routes: RouteObject[] = [{path: '/',element: <Navigate to="/user" />},{path: '/user',element: <User />}
]export default routes// 4,views文件夹 添加视图文件const User = () => {return <div>user</div>
}
export default User
8,创建react模板

https://snippet-generator.app/?description=&tabtrigger=&snippet=&mode=vscode

tsreact为快捷键名称

将下面模板代码拷入上面链接地址

import React, {memo} from "react";
import type {FC, ReactNode} from 'react'interface IProps {children?: ReactNode
}const ${1:Home}: FC<IProps> = () => {return <div>${1:Home}</div>
}export default memo(${1:Home})

将编译后的代码放入下面模板中

9,添加Suspense应急方案
// 在app.tsx中import React, { Suspense } from 'react'function App() {return (<div className="App">{useRoutes(routes)}<Suspense fallback="lading..."><div className="main"></div></Suspense></div>)
}

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

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

相关文章

JAVA Kotlin Androd 使用String.format()格式化日期

在以前的开发中&#xff0c;日期格式化一直使用的是SimpleDateFormat进行格式化。今天发现String.format也可以格式化。当 然&#xff0c;两种方式的优劣没有进行深入分析。 val date Date()//月&#xff0c;日&#xff0c;星期&#xff0c;AM/PM//Fue 1 (Sat) pmval fullDate…

deepseek:三个月备考高级系统架构师

一、备考总体规划&#xff08;2025年2月11日 - 2025年5月&#xff09; 1. 第一阶段&#xff1a;基础夯实&#xff08;2025年2月11日 - 2025年3月10日&#xff09; 目标&#xff1a;快速掌握系统架构师考试的核心知识点。 重点内容&#xff1a; 计算机组成原理、操作系统、数据…

rust笔记2-特质trait

Rust中的Trait技术 1. Trait的由来 Trait是Rust中实现多态&#xff08;polymorphism&#xff09;的核心机制之一。它的设计灵感来自于Haskell的类型类&#xff08;Type Class&#xff09;和C的概念&#xff08;Concepts&#xff09;。Trait允许你定义一组方法签名&#xff0c;…

linux 安装启动zookeeper全过程及遇到的坑

1、下载安装zookeeper 参考文章&#xff1a;https://blog.csdn.net/weixin_48887095/article/details/132397448 2、启动失败 1、启动失败JAVA_HOME is not set and java could not be found in PATH 已安装 JAVA 配置了JAVA_HOME,还是报错解决方法&#xff1a;参考&#xf…

网络安全中的机器学习

当涉及到网络安全时&#xff0c;技术一直是保护系统免受攻击和数据泄露的关键。在这篇论文中&#xff0c;我将介绍一些当前在网络安全领域使用的关键技术&#xff0c;包括加密&#xff0c;身份验证和防火墙。 首先&#xff0c;加密是网络安全中最常见的技术之一。加密是指使用算…

windows上vscode cmake工程搭建

安装vscode插件&#xff1a; 1.按装fastc&#xff08;主要是安装MinGW\mingw64比较方便&#xff09; 2.安装C&#xff0c;cmake&#xff0c;cmake tools插件 3.准备工作完成之后&#xff0c;按F1&#xff0c;选择cmake:Quick Start就可以创建一个cmake工程。 4.设置Cmake: G…

燧光 XimmerseMR SDK接入Unity

官网SDK文档连接&#xff1a; RhinoX Unity XR SDK 一&#xff1a;下载SDK 下载链接&#xff1a;RhinoX Unity XR SDK 二&#xff1a;打开Unity项目&#xff0c;添加Package 1、先添加XR Core Utilties包和XR Interaction Toolkit包 2、导 2、再导入下载好的燧光SDK 三&…

基于flask+vue框架的的医院预约挂号系统i1616(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,医生,科室信息,就诊信息,医院概况,挂号信息,诊断信息,取消挂号 开题报告内容 基于FlaskVue框架的医院预约挂号系统开题报告 一、研究背景与意义 随着医疗技术的不断进步和人们健康意识的日益增强&#xff0c;医院就诊量逐年增加。传统的现场…

【电机控制器】ESP32-C3语言模型——豆包

【电机控制器】ESP32-C3语言模型——豆包 文章目录 [TOC](文章目录) 前言一、简介二、代码三、实验结果四、参考资料总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、简介 二、代码 #include <WiFi.h> #inc…

linux核心命令

linux核心命令 目录&#xff1a;1. ls2. alias3. cd4. clear5. date6. cat7. head 和 tail8. less 和 more9. od10. cp 和 scp11. touch12. mkdir 和 rmdir13. rm14. find15. grep16. diff17. file18. mv19. wc 目录&#xff1a; 1. ls 相关知识点 用于列出目录内容。常用选项…

Cross-correlation 加速算法公式推导

Cross-correlation 加速算法公式推导 引言正文引言 由于使用点对点的计算方式过于消耗计算机的算力,尤其是当信号采样点数超过 1000 时,计算机需要计算 1 0 6 10^6 10

【论文阅读】SAM-CP:将SAM与组合提示结合起来的多功能分割

导言 近年来&#xff0c;视觉基础模型的快速发展推动了多模态理解的进步&#xff0c;尤其是在图像分割任务中。例如&#xff0c;Segment Anything模型&#xff08;SAM&#xff09;在图像Mask分割上表现出色&#xff0c;但在语义及实例分割方面仍存在局限。本文提出的SAM-CP&am…

Javascript网页设计案例:通过PDFLib实现一款PDF分割工具,分割方式自定义-完整源代码,开箱即用

功能预览 一、工具简介 PDF 分割工具支持以下核心功能: 拖放或上传 PDF 文件:用户可以通过拖放或点击上传 PDF 文件。两种分割模式: 指定范围:用户可以指定起始页和结束页,提取特定范围的内容。固定间距:用户可以设置间隔页数(例如每 5 页分割一次),工具会自动完成分…

Docker 安装和配置 Nginx 详细图文教程

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

RD-搭建测试环境

测试团队职责 环境验证&#xff1a;确保开发部署的测试环境可访问&#xff0c;页面/接口无阻塞问题&#xff1b; 配置检查**&#xff1a;核对数据库连接、接口域名、HT证书等关键配置&#xff1b; 数据准备**&#xff1a;导入基线数据&#xff0c;隔离测试与生产数据&#xff1…

科普mfc100.dll丢失怎么办?有没有简单的方法修复mfc100.dll文件

当电脑频繁弹窗提示“mfc100.dll丢失”或应用程序突然闪退时&#xff0c;这个看似普通的系统文件已成为影响用户体验的核心痛点。作为微软基础类库&#xff08;MFC&#xff09;的核心组件&#xff0c;mfc100.dll直接关联着Visual Studio 2010开发的大量软件运行命脉。从工业设计…

2025蓝桥杯JAVA编程题练习Day5

1.最少步数【省模拟赛】 问题描述 小蓝要上一个楼梯&#xff0c;楼梯共有 n 级台阶&#xff08;即小蓝总共要走 nn级&#xff09;。小蓝每一步可以走 1 级、2 级或 3 级台阶。 请问小蓝至少要多少步才能上到楼梯顶端&#xff1f; 输入格式 输入一行包含一个整数 n。 输出…

破解Docker镜像拉取难题:为Docker配置代理加速镜像拉取

为Docker配置代理加速镜像拉取 概述守护进程配置&#xff08;推荐长期使用&#xff09;Systemd环境变量配置&#xff08;适合临时调整&#xff09;其他 概述 为什么需要配置代理与镜像加速? 跨国网络限制&#xff1a;境外镜像仓库拉取速度慢或无法访问企业安全策略&#xff…

el-table已经选中的项,通过selectable属性不可以再次选择

示例&#xff1a; 1、表格当前行状态已完成时&#xff0c;不可选择 <el-table-column type"selection" width"55" :selectable"isRowSelectable"></el-table-column>// 表格行是否可选 isRowSelectable (row, index) {// 根据row的…

BGP配置华为——路径优选验证

实验拓扑 实验要求 实现通过修改AS-Path属性来影响路径选择实现通过修改Local_Preference属性来影响路径选择实现通过修改MED属性来影响路径选择实现通过修改preferred-value属性来影响路径选择 实验配置与效果 1.改名与IP配置 2.as300配置OSPF R3已经学到R2和R4的路由 3.…