在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 相关文章推荐
JavaScript在IE中“意外地调用了方法或属性访问”
Nov 19 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 Javascript
解析页面加载与js函数的执行 onload or ready
Dec 12 Javascript
javascript中innerText和innerHTML属性用法实例分析
May 13 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
探究JavaScript中的五种事件处理程序方式
Dec 07 Javascript
详解jQuery简单的表格应用
Dec 16 Javascript
javascript中json对象json数组json字符串互转及取值方法
Apr 19 Javascript
浅谈angular.js跨域post解决方案
Aug 30 Javascript
vue 利用路由守卫判断是否登录的方法
Sep 29 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
Feb 01 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
phpmyadmin的#1251问题
2006/11/25 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
JavaScript 格式字符串的应用
2010/03/29 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
jQuery列表检索功能实现代码
2017/07/17 jQuery
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
利用jqgrid实现上移下移单元格功能
2018/11/07 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
python中精确输出JSON浮点数的方法
2014/04/18 Python
python实现在目录中查找指定文件的方法
2014/11/11 Python
在Python程序中实现分布式进程的教程
2015/04/28 Python
python杀死一个线程的方法
2015/09/06 Python
解决python 输出是省略号的问题
2018/04/19 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
生物技术专业研究生自荐信
2013/09/22 职场文书
自荐书范文范例
2014/02/13 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
申报优秀教师材料
2014/12/16 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js