react脚手架如何配置less和ant按需加载的方法步骤


Posted in Javascript onNovember 28, 2018

前言

create-react-app是由React官方提供并推荐使用构建新的React单页面应用程序的最佳方式,其构建的项目默认是不支持less的,需要我们手动集成

一、react脚手架搭建

1、先全局安装create-react-app(提前需要安装node)

npm install -g create-react-app

2、然后通过create-react-app创建项目my-app

create-react-app my-app

3、最后通过cd进入项目文件夹并启动

cd my-app
yarn start

4、终端出现如下界面表示启动成功,并在浏览器中输入http://localhost:3000/即可看到react的初始页面

react脚手架如何配置less和ant按需加载的方法步骤

二、目录结构

┌─node_modules           -依赖包
    ├─public              -全局文件
    ├─src                -项目文件
    ├─.gitignore            -提交被git忽略文件目录
    ├─package.json           -项目配置文件
    ├─README.md             -README文件
    └─yarn.lock             -锁定项目所需的各种配置版本

三、安装less和less-loader(less编译器)

yarn add less less-loader

安装完成之后该怎么配置呢?这时需要通过webpack来配置less-loader,但是我们在上面的目录结构中似乎并没有发现webpack.config.js文件,这是因为脚手架为了实现“零配置”,会默认把一些通用的脚本和配置集成到 react-scripts,目的是让我们专注于src目录下的开发工作,不再操心环境配置。同时,被其集成的脚本和配置也会从程序目录中消失 ,程序目录也会变得干净许多

接下来,我们就需要通过yarn eject将webpack配置暴露出来

四、暴露webpack配置

执行yarn eject

提示:执行该命令后会把已构建依赖项、配置文件和脚本复制到程序目录中。该操作是不可逆转的,执行完成后会删除这个命令,也就是说只能执行一次

配置完成之后,我们会发现我们的目录结构中会多出两个文件夹:

react脚手架如何配置less和ant按需加载的方法步骤

其中config文件夹,有三个关于 webpack 的配置文件:

  • webpack.config.dev.js 开发环境配置
  • webpack.config.prod.js 生产环境配置
  • webpackDevServer.config.js 开发服务器配置

五、修改webpack配置文件

第一步:到webpack.config.dev.js文件中找到如下代码,在sassModuleRegex后面加上lessRegex和lessModuleRegex变量

react脚手架如何配置less和ant按需加载的方法步骤

第二步:在下面加上这两段代码

react脚手架如何配置less和ant按需加载的方法步骤

第三步:按照同样的方法,把webpack.config.prod.js也配置上

六、测试

1、在src目录中把App.css改为App.less文件,并在里面加上

@title-color:#f00;
.App-link {
 color:@title-color;
}

2、然后再App.js中把less文件导入

import './App.less';

3、回到页面刷新,发现字体变红,说明配置成功

react脚手架如何配置less和ant按需加载的方法步骤

七、集成Ant Design 并配置按需加载

antd:是蚂蚁金服推出的一个很优秀的react UI库,其中包含了很多我们经常使用的组件,对于小白学习react来说十分友好!

1、首先需要安装antd

yarn add antd

2、安装完成之后我们就可以直接在代码里使用它的ui组件了

import {Button} from 'antd';
import 'antd/dist/antd.css';

这个方法的优点是比较简单,不需再次配置,直接加载即可,但是比较麻烦,每次载入一个新的组件都需要先载入组件,再加载组件的css文件,性能较差

3、使用 babel-plugin-import 来进行按需加载

yarn add babel-plugin-import --save-dev

4、安装完成之后,在package.json中找到babel配置项,然后再里面加上plugins

react脚手架如何配置less和ant按需加载的方法步骤

注意: 这里babel配置项是需要通过yarn eject暴露出来才会有,原本的package.json是没有这个配置项的

5、最后只需从antd引入模块即可,无需单独引入样式, babel-plugin-import会帮助你加载 JS 和 CSS

import {Button} from 'antd';

6、关于antd的按需加载其实还有其他的方法,官方推荐使用react-app-rewired来实现antd的按需加载
详见: https://ant.design/docs/react/use-with-create-react-app-cn#%E9%AB%98%E7%BA%A7%E9%85%8D%E7%BD%AE

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 控制 html元素 显示/隐藏实现代码
Sep 01 Javascript
javascript学习笔记(八) js内置对象
Jun 19 Javascript
javascript 使td内容不换行不撑开
Nov 29 Javascript
js中如何把字符串转化为对象、数组示例代码
Jul 17 Javascript
一个jquery实现的不错的多行文字图片滚动效果
Sep 28 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
Oct 31 Javascript
JavaScript日期类型的一些用法介绍
Mar 02 Javascript
js动态修改表格行colspan列跨度的方法
Mar 30 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 Javascript
angular指令笔记ng-options的使用方法
Sep 18 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
Apr 10 jQuery
微信小程序实现吸顶特效
Jan 08 Javascript
微信小程序仿知乎实现评论留言功能
Nov 28 #Javascript
微信小程序实现评论功能
Nov 28 #Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
Nov 28 #Javascript
小程序点击图片实现自动播放视频
May 29 #Javascript
django使用channels2.x实现实时通讯
Nov 28 #Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
Nov 28 #Javascript
详解Vue中watch的详细用法
Nov 28 #Javascript
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
php获取某个目录大小的代码
2008/09/10 PHP
深入理解PHP原理之异常机制
2010/08/21 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
动态创建类实例代码
2009/10/07 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
matplotlib中legend位置调整解析
2017/12/19 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
求职自荐信
2013/12/14 职场文书
百年校庆节目主持词
2014/03/27 职场文书
股东授权委托书范本
2014/09/13 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书