0. src下目录划分
assets:放我们的静态资源,图片,字体和公共初始样式等
common:放我们公共的JS文件
components:放我们项目的公共组件
pages:放项目的主视图组件
router:放项目的路由配置
services:网络请求部分
store:放redux的相关配置
utils:放一些处理我们数据的JS方法
1. normalize.css resets.css对项目样式进行重置
@import "~antd/dist/antd.css";
@import "~normalize.css";
/* 样式的重置 */
body,
html,
h1,
h2,
h3,
h4,
h5,
h6,
ul,
ol,
li,
dl,
dt,
dd,
header,
menu,
section,
p,
input,
td,
th,
ins {
padding: 0;
margin: 0;
}
ul,
ol,
li {
list-style: none;
}
a {
text-decoration: none;
color: #666;
}
a:hover {
color: #666;
text-decoration: underline;
}
i,
em {
font-style: normal;
}
input,
textarea,
button,
select,
a {
outline: none;
border: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
img {
border: none;
vertical-align: middle;
}
/* 全局样式 */
body,
textarea,
select,
input,
button {
font-size: 12px;
color: #333;
font-family: Arial, Helvetica, sans-serif;
background-color: #f5f5f5;
}
/* 文字多的省略号 */
.text-nowrap {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.wrap-v1 {
width: 1100px;
margin: 0 auto;
}
.wrap-v2 {
width: 980px;
margin: 0 auto;
}
/* 精灵图 */
.sprite_01 {
background: url(../img/sprite_01.png) no-repeat 0 9999px;
}
/* 图片上显示玻璃的操作 */
.image_cover {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
text-indent: -9999px;
background: url(../img/sprite_cover.png) no-repeat -145px -57px;
}
2. yarn add @craco/craco配置别名
将react-scripts eject。改为craco
package.json文件中
================================================
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "react-scripts eject"
}
创建craco.config.js文件
================================================
const path = require("path")
const resolve = dir => path.resolve(__dirname,dir)
module.exports = {
webpack:{
alias:{
"@": resolve("src"),
"components": resolve("src/components")
}
}
}
3.配置路由
yarn add react-router-dom
yarn add react-router-config
直接在router中index.js
import WDiscover from '@/pages/discover';
import WMine from '@/pages/mine'
import WFriend from '@/pages/friend'
const routes = [{
path: '/discover',
exact: true,
component: WDiscover
},
{
path: '/mine',
component: WMine
},
{
path: '/friend',
component: WFriend
}]
export default routes;
---------------------------------------
import React, { memo } from 'react'
import { renderRoutes } from 'react-router-config'
import routes from './router'
// 组件
import WXHAppHeader from '@/components/app-header'
import WXHAppFooter from '@/components/app-footer'
import { HashRouter } from 'react-router-dom'
export default memo(function App() {
return (
<HashRouter>
<WXHAppHeader/>
{ renderRoutes(routes) }
<WXHAppFooter/>
</HashRouter>
)
})