在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中的一些注意事项 更新中
Dec 06 Javascript
浅析LigerUi开发中谨慎载入common.css文件
Jul 09 Javascript
JS处理json日期格式化问题
Oct 01 Javascript
uploadify多文件上传参数设置技巧
Nov 16 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 Javascript
js中使用使用原型(prototype)定义方法的好处详解
Jul 04 Javascript
JS插件plupload.js实现多图上传并显示进度条
Nov 29 Javascript
JS验证不重复验证码
Feb 10 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
angular 用Observable实现异步调用的方法
Dec 27 Javascript
vue+layui实现select动态加载后台数据的例子
Sep 20 Javascript
优化Vue中date format的性能详解
Jan 13 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
自定义PHP分页函数
2006/10/09 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
JS性能优化笔记搜索整理
2013/08/21 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
Python实现E-Mail收集插件实例教程
2019/02/06 Python
python提取xml里面的链接源码详解
2019/10/15 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
京东国际站:JOYBUY
2017/11/23 全球购物
记者岗位职责
2014/01/06 职场文书
教师远程培训感言
2014/03/06 职场文书
教师节学生演讲稿
2014/09/03 职场文书
生产操作工岗位职责
2014/09/16 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript