当前位置: 首页 > news >正文

React通用后台模板

一. 项目初始化

1. 创建项目

环境

npm init vite

打开package.json,参考以下各模块版本:

"dependencies": {    "react": "^18.2.0",    "react-dom": "^18.2.0",    "react-redux": "^7.2.8",    "react-router-dom": "^6.3.0",    "redux": "^4.1.2"
},

下载后进入到项目文件夹,安装package.json中的包:

npm i

尝试更改package.json启动命令:

"scripts": {    "dev": "vite --host --port 3002",    "build": "tsc && vite build",    "preview": "vite preview"
}

2. 项目目录初始化

删除掉官方自带而对我们暂时帮助不大的文件。删除src下除了main.tsx和App.tsx的其他文件;主文件/src/main.tsx修改成:

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

App.tsx文件修改成:

import { useState } from 'react'
function App() {  
const [count, setCount] = useState(0)  return (    <div className="App"> 顶级组件    </div>  )
}export default App

3. 样式初始化

reset-css比Normalize.css更直接,干净利落去除默认样式,更适合在企业里的场景,所以用reset-css,而不用Normalize.css】

npm i reset-css

src/main.tsx中引入reset-css

import React from 'react'
import ReactDOM from 'react-dom/client'
import "reset-css"
import App from './App'ReactDOM.createRoot(document.getElementById('root')!).render(  <React.StrictMode>    <App />  </React.StrictMode>
)

4. scss的安装和初步使用

安装sass   vite中很方便,loader这些都不用自己配置,只需要安装好即可使用npm i --save-dev sass

src下新建assets/styles/global.scss

$color:#eee;
body{// 禁止选中文字    user-select:none;    background-color: $color;
}
img{    // 禁止拖动图片    -webkit-user-drag:none;
}

main.tsx中引入全局样式

import React from 'react'
import ReactDOM from 'react-dom/client'
import "reset-css"
import "./assets/styles/global.scss"
import App from './App'ReactDOM.createRoot(document.getElementById('root')!).render(  <React.StrictMode>    <App />  </React.StrictMode>
)

5. 配置项目路径别名

// https://vitejs.dev/config/
import path from 'path'export default defineConfig({  plugins: [react()],  resolve:{    alias:{      "@":path.resolve(__dirname,'./src')    }  }
})

这时候引入的会path模块报红,但其实我们已经有node,所以就已经有path模块,只是缺少ts的一些声明配置。所以需要安装关于node这个库的ts声明配置

npm i -D @types/node

安装成功就没有报红了,如果import后面的path报红,就把引入换成 import * as path from'path';

配置路径别名的提示

虽然现在路径别名已经有了,但是在文件中输入@是没有提示路径的需要我们在tsconfig.json中:添加两项配置

"compilerOptions": {   ...    "baseUrl": "./",    "paths": {      "@/*": [           "src/*"      ]    }
},

6. scss模块化

src下新建components文件夹,components文件夹下新建Comp1文件夹,新建index.tsx和comp1.scss

import "./comp1.scss"
function Comp() { return (   <div className="box">       <p>这是Comp1里面的组件</p>   </div>)
}
export default Comp

src/components/Comp1/comp1.scss中:

.box{   color:red
}

components文件夹下新建Comp2文件夹,新建index.tsx:

// !!!注意,在Comp2组件中不引入上面的comp1.scss样式
function Comp() { return (   <div className="box">       <p>这是Comp2里面的组件</p>   </div>)
}
export default Comp

在App.tsx中使用这两个组件:

import { useState } from 'react'
import Comp1 from "./components/Comp1"
impo
http://www.lryc.cn/news/291186.html

相关文章:

  • 【Axure教程0基础入门】00Axure9汉化版下载、安装、汉化、注册+01制作线框图
  • day38_MySQL
  • element ui组件 el-date-picker设置default-time的默认时间
  • ###C语言程序设计-----C语言学习(8)## 斐波那契数列问题,素数问题,人数分配问题。
  • 蓝桥杯 第 1 场 小白入门赛
  • 飞天使-linux操作的一些技巧与知识点5-expect与docker便捷命令
  • 编曲学习:和声音程 调式体系 唱名法 调式调性
  • 【大数据】Flink 架构(四):状态管理
  • 执行rpm安装命令的时候抛出异常:rpmdb BDB0113 Thread/process
  • Android 在WebView中加载H5传递图片
  • 图的学习
  • 空间数据分析入门POI与莫兰指数基础知识笔记
  • TortoiseSVN各版本汉化包下载
  • STM32连接阿里云物联网平台
  • 力扣hot100 组合总和 回溯 剪枝 组合
  • 代码随想录 Leetcode669. 修剪二叉搜索树
  • Redis系列-数据结构篇
  • 正则表达式(RE)
  • 发布技术路线图!美国量子计算公司QuEra公开三年OKR
  • Vue2:请求接口的两种方式axios和vue-resource
  • 扩展学习|商业智能和大数据分析的研究前景(比对分析)
  • 『Docker入门指南』- 详细安装与配置教程,助你起航容器化世界!
  • 如何提高http连接成功率?
  • Elasticsearch 中使用MustNot等同于不等于遇到的坑
  • 嵌入式工程师day15(链表)
  • Coppeliasim倒立摆demo
  • 汽车燃油泵数据分析:全球市场的年复合增长率将达到10%左右
  • DC-磁盘管理(23国赛真题)
  • 216961-98-7,BODIPY 493/503 NHS 活化酯,可以应用于分子生物学等领域中
  • Python采集学习笔记-读取excel数据