在Create React App中启用Sass和Less的方法示例


Posted in Javascript onJanuary 16, 2019

关于创建 create-react-app 项目请查看:create-react-app 的安装与创建 。

关于在 less 和 sass 如何在 create-react-app 启用 CSS Modules,请查看我的上一篇文章: 在 Create React App 中使用 CSS Modules 。

启用 Sass 语法编写 CSS

create-react-app 脚手架中已经添加了 sass-loader 的支持,所以只需要安装 node-sass 插件即可

安装 node-sass 插件

$ npm install node-sass --save

# 或者
# $ yarn add node-sass

用法:

编写 sass 文件:App.scss

.App {
 text-align: center;
 &-logo {
  animation: App-logo-spin infinite 20s linear;
  height: 40vmin;
 }
}

在 js 文件中直接使用:改写 App.js 文件

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.scss';

class App extends Component {
 render() {
  return (
   <div className="App">
    <header className="App-header">
     <img src={logo} className="App-logo" alt="logo" />
    </header>
   </div>
  );
 }
}

export default App;

在浏览器中查看效果

运行项目,此时在浏览器中即可查看到 logo 图片在缓慢转动。

启用 Less 语法编写 CSS

由于 create-react-app 脚手架中并没有配置关于 less 文件的解析,所以我们需要自己进行配置。需要安装的插件 less , less-loader 。

添加 Less 相关配置

在命令行运行 npm run eject 命令

此命令会将脚手架中隐藏的配置都展示出来,此过程不可逆

运行完成之后,打开 config 目录下的 webpack.config.js 文件,找到 // style files regexes 注释位置,仿照其解析 sass 的规则,在下面添加两行代码

// 添加 less 解析规则
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;

找到 rules 属性配置,在其中添加 less 解析配置

// Less 解析配置
{
  test: lessRegex,
  exclude: lessModuleRegex,
  use: getStyleLoaders(
    {
      importLoaders: 2,
      sourceMap: isEnvProduction && shouldUseSourceMap,
    },
    'less-loader'
  ),
  sideEffects: true,
},
{
  test: lessModuleRegex,
  use: getStyleLoaders(
    {
      importLoaders: 2,
      sourceMap: isEnvProduction && shouldUseSourceMap,
      modules: true,
      getLocalIdent: getCSSModuleLocalIdent,
    },
    'less-loader'
  )
}

此时配置完成,安装 less 和 less-loader 插件即可

$ npm install less less-loader --save

用法

以下代码根据上面 sass 用法中的文件进行修改

编写 less 文件:App.less

.App {
 text-align: center;
 &-logo {
  animation: App-logo-spin infinite 20s linear;
  height: 40vmin;
 }
}

在 js 文件中直接使用:改写 App.js 文件

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.less';

class App extends Component {
 render() {
  return (
   <div className="App">
    <header className="App-header">
     <img src={logo} className="App-logo" alt="logo" />
    </header>
   </div>
  );
 }
}

export default App;

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

Javascript 相关文章推荐
jquery 插件开发备注
Aug 27 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
ExtJS4 动态生成的grid导出为excel示例
May 02 Javascript
jQuery搜索同辈元素方法
Feb 10 Javascript
JavaScript html5 canvas绘制时钟效果
Mar 01 Javascript
浅谈js script标签中的预解析
Dec 30 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
Mar 09 Javascript
js a标签点击事件
Mar 30 Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
React学习笔记之高阶组件应用
Jun 02 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
Apr 22 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
Aug 24 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 #Javascript
Vue 样式绑定的实现方法
Jan 15 #Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 #Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
Jan 15 #Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 #Javascript
详解webpack引入第三方库的方式以及注意事项
Jan 15 #Javascript
JS高阶函数原理与用法实例分析
Jan 15 #Javascript
You might like
Protoss兵种介绍
2020/03/14 星际争霸
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
Python实例一个类背后发生了什么
2016/02/09 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
kafka-python批量发送数据的实例
2018/12/27 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
init进程的作用
2015/08/20 面试题
开业庆典主持词
2014/03/21 职场文书
战略合作意向书
2014/07/29 职场文书
调研汇报材料范文
2014/08/17 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python