搭建一个React项目

简介: 搭建一个React项目

1.新建React项目,根据需要是否选用typescript

npx create-react-app demo --template typescript
复制代码

2.使用less

1.暴露webpack配置

yarn eject
复制代码

2.修改webpack.config.js文件,在合适的位置添加以下代码

const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;
module.exports = function (webpackEnv) {
    return {
        module: {
            rules: [
                {
                    oneOf:[
                        {
                          test: lessRegex,
                          exclude: lessModuleRegex,
                          use: getStyleLoaders(
                            {
                              importLoaders: 2,
                              sourceMap: isEnvProduction
                                ? shouldUseSourceMap
                                : isEnvDevelopment,
                            },
                            "less-loader"
                          ),
                          sideEffects: true,
                        },
                        {
                          test: lessModuleRegex,
                          use: getStyleLoaders(
                            {
                              importLoaders: 2,
                              sourceMap: isEnvProduction
                                ? shouldUseSourceMap
                                : isEnvDevelopment,
                              modules: {
                                getLocalIdent: getCSSModuleLocalIdent,
                              },
                            },
                            "less-loader"
                          ),
                        },
                    ]
                }
            ]
        }
    }
}
复制代码

3.重新启动,测试less是否生效

疑难杂症1——报错TypeError: this.getOptions is not a function

原因:less-laoder安装版本太高,于是从原来的10.*.*版本换成了5.0.0...

网络异常,图片无法展示
|

疑难杂症2——引入less文件的地方报错Cannot find module './App.less'

原因:在typscript中是无法识别非代码资源,需要主动的去声明这个module。项目编译过程中会自动去读取.d.ts这种类型的文件,所以不需要我们手动地加载他们。当然.d.ts文件也不能随便放置在项目中,这类文件和ts文件一样需要被typescript编译,所以一样只能放置在tsconfig.json中include属性所配置的文件夹下。

网络异常,图片无法展示
|
在src下新建global.d.ts文件:

declare module '*.less'
复制代码

3. 引入Antd

yarn add antd
yarn add -D babel-plugin-import
复制代码

修改 src/App.less,在文件顶部引入 antd/dist/antd.css:

@import '~antd/dist/antd.css';
复制代码

发现antd样式不生效,解决办法1:该用在App.tsx文件里引入antd的样式文件:

import 'antd/dist/antd.css'
复制代码

如果还是生效,可能是因为下载的antd文件它是在我们的node_modules文件夹下,在antd(node_modules)目录下不开启局部css样式,在非antd(非node_modules)目录下开启局部css样式。

4. 文件夹取别名,用绝对路径取代相对路径

const path = require('path')
module.exports = {
  resolve: {
  // 表示这几个文件的后缀名可以省略不写,默认是js、json
            extensions: ['.js', '.jsx', '.json'],
            alias: { // 别名
              '@': path.join(__dirname, './src')
            }
        }
}
复制代码

5. 将svg图标用做React组件

参考文章:

[译]如何将 SVG 图标用做 React 组件?

How to use SVG Icons as React Components

How to pass props to components in React

TypeScript × @ant-design/icons 动态加载与类型提示

With antd custom svg icons, how to pass props down to svg?



相关文章
|
5月前
|
前端开发 JavaScript 测试技术
从零开始搭建react+typescript+antd+redux+less+vw自适应项目
从零开始搭建react+typescript+antd+redux+less+vw自适应项目
151 0
|
5月前
|
前端开发 API 数据安全/隐私保护
【第45期】一文解决React项目的权限管理
【第45期】一文解决React项目的权限管理
292 0
|
5月前
|
Web App开发 资源调度 JavaScript
竟然可以在一个项目中混用 Vue 和 React?
竟然可以在一个项目中混用 Vue 和 React?
452 0
|
5月前
|
前端开发 API
react如何进行项目配置代理
react如何进行项目配置代理
113 0
|
5月前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
5月前
|
存储 JSON 前端开发
react保姆级搭建新项目
此文主要以ts+vite+router6+antd 快速搭建一个react项目,适用于初学者,用于学习交流
|
5月前
|
移动开发 JavaScript 前端开发
vue/react项目刷新页面出现404的原因以及解决办法
vue/react项目刷新页面出现404的原因以及解决办法
554 0
|
5月前
|
存储 资源调度 前端开发
【React | 完整项目创建流程】能看到这么详细的React配置流程,就偷着乐吧!
【React | 完整项目创建流程】能看到这么详细的React配置流程,就偷着乐吧!
198 1
|
5月前
|
前端开发
React项目首页中用canvas实现星空
React项目首页中用canvas实现星空
97 2
|
5月前
|
安全
自媒体营销软文灵感思路来源——万能公式:6P方法论
自媒体营销软文灵感思路来源——万能公式:6P方法论
自媒体营销软文灵感思路来源——万能公式:6P方法论
下一篇
无影云桌面