3. 主页面架构设计
课程目标介绍
第二章 项目主页工程搭建
- 基础插件安装,less文件加载配置
- 项目主页结构开发
- 菜单组件开发
- 头部组件开发
- 底部组件开发
3-1 基础插件安装(1)
基础插件安装,less文件加载配置
安装所需的插件
- 安装React-Router, Axios
- 安装antD界面框架
- 暴露webpack配置文件
- 安装less-loader
- 修改less-loader
1 yarn add react-router-dom axios less-loader # 3.0升级到 4.0
AntD 是基于less
开发的
暴露webpack文件使用less
1yarn eject
create-react-app添加less配置
修改完成配置后需要重启项目,从后向前使用, less的配置放在css,scss之后
可能需要删除
node_module
文件夹重新yarn install
yarn add less
需要修改的文件config/webpack.config.js
1// style files regexes 2const cssRegex = /\.css$/; 3const cssModuleRegex = /\.module\.css$/; 4const lessRegex = /\.less$/; 5const lessModuleRegex = /\.module\.less$/; 6const sassRegex = /\.(scss|sass)$/; 7const sassModuleRegex = /\.module\.(scss|sass)$/;
1{
2 test: lessRegex,
3 exclude: lessModuleRegex,
4 use: getStyleLoaders(
5 {
6 importLoaders: 2,
7 sourceMap: isEnvProduction
8 ? shouldUseSourceMap
9 : isEnvDevelopment,
10 },
11 'less-loader'
12 ),
13 sideEffects: true,
14},
15
16 {
17 test: lessModuleRegex,
18 use: getStyleLoaders(
19 {
20 importLoaders: 2,
21 sourceMap: isEnvProduction
22 ? shouldUseSourceMap
23 : isEnvDevelopment,
24 modules: true,
25 getLocalIdent: getCSSModuleLocalIdent,
26 },
27 'less-loader'
28 ),
29 },
使用antd的组件
1yanr add antd
1import React from 'react'
2import Child from './Child'
3import './index.less'
4import { Button } from 'antd'
5import 'antd/dist/antd.css'
6export default class Life extends React.Component {
7
8 // constructor(props) {
9 // super(props);
10 // this.state = {
11 // count: 0
12 // };
13 // }
14 state = {
15 count: 0
16 }
17
18 // ES 6 写法
19 handleAdd = () => {
20 this.setState({
21 count: this.state.count + 1
22 })
23 }
24
25 handleClick() {
26 this.setState({
27 count: this.state.count + 1
28 })
29 }
30
31
32 render() {
33 // let style = {
34 // padding:200
35 // }
36 // return 必须有根元素,不能同时出现两个div
37 // return <div style={style}>
38 return <div className="content">
39 <p>React声明周期介绍</p>
40 <Button onClick={this.handleAdd}>AntD点击一下</Button>
41 <button onClick={this.handleAdd}>点击一下</button>
42 <button onClick={this.handleClick.bind(this)}>点击一下</button>
43 <p>{this.state.count}</p>
44 <Child name={this.state.count}></Child>
45 </div>
46 }
47}
使用 babel-plugin-import
babel-plugin-import 是一个用于按需加载组件代码和样式的 babel 插件(原理),现在我们尝试安装它并修改 config-overrides.js
文件。
1yarn add babel-plugin-import
1yarn add less@^2.7.3 # 制修订版本安装
babel-plugin-import配置babel按需引入antd模块
将less版本降到3.0以下 比如安装 2.7.3版本。
需要修改的文件config/webpack.config.js
1{ 2 test: /\.(js|mjs|jsx|ts|tsx)$/, 3 include: paths.appSrc, 4 loader: require.resolve('babel-loader'), 5 options: { 6 customize: require.resolve( 7 'babel-preset-react-app/webpack-overrides' 8 ), 9 10 plugins: [ 11 [ 12 require.resolve('babel-plugin-named-asset-import'), 13 { 14 loaderMap: { 15 svg: { 16 ReactComponent: '@svgr/webpack?-prettier,-svgo![path]', 17 }, 18 }, 19 }, 20 ], 21 ['import',{libraryName:'antd',style:true}], 22 ], 23 // This is a feature of `babel-loader` for webpack (not Babel itself). 24 // It enables caching results in ./node_modules/.cache/babel-loader/ 25 // directory for faster rebuilds. 26 cacheDirectory: true, 27 // Don't waste time on Gzipping the cache 28 cacheCompression: false, 29 }, 30 },
更换主题
1options:{
2 modules: false,
3 modifyVars: {
4 "@primary-color": "#f9c700" // 全局主色
5 }
6},
3-3 项目主页结构开发
主页结构定义
- 页面结构定义
- 目录结构的定义
- 栅格系统使用
- calc计算方法使用
calc 动态计算长度值
3-2 基础插件安装(2) 3-3 (安装课程中Webpack版本的用户请忽略这一小节)Webpack4.19.1版本文件合并后配置按需加载 3-4 页面结构开发(1) 3-5 页面结构开发(2) 3-6 菜单组件开发(1) 3-7 菜单组件开发(2) 3-8 头部组件实现(1) 3-9 头部组件实现(2) 3-10 底部组件功能实现(1) 3-11 底部组件功能实现(2)