前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >webpack实战——样式预处理

webpack实战——样式预处理

作者头像
流眸
发布2020-08-27 10:03:13
8810
发布2020-08-27 10:03:13
举报

前言

这是webpack实战系列笔记的第8篇记录——样式与处理,前几篇记录如下:

  • 打包第一个应用
  • 模块化与模块打包
  • 资源输入与输出
  • 一切皆模块
  • 预处理器【上篇】
  • 预处理器——常用loader【下篇】
  • 样式文件分离

在目前的前端项目中,经常可以看到使用SASSLESS来对CSS进行处理,那么在webpack中如何配置?

样式预处理

“样式预处理,指的是在开发中使用到的一些预编译语言,如SCSS. LESS等,在项目打包过程中再将这些预编译语言转换为CSS

借助这些语言强大和便捷的特性,可以降低项目的开发及维护成本。

1. Sass 与 SCSS

1.1 关系

我们经常看到Sass与SCSS,但是有什么关系呢?我们怎么选择呢?

Sass是对CSS的语法增强,它有两种语法,现在使用的更多的是SCSS。如果你两者都使用过,那么可以发现无论是安装还是配置,都是使用 sass-loader,而编写保存的文件后缀却是:.scss

一般而言,我们使用它需要配置以下几个loader搭配使用:

  • sass-loader
  • css-loader
  • style-loader
  • node-sass

如上,样式预处理器的安装好理解,那么为什么要安装node-loader呢?因为loader本身只是编译核心库与Webpack的连接器,因此这里我们除了Sass-loader以外还需安装node-sass,node-sass才是真正用来编译SCSS的,而sass-loader只是起到黏合作用。

1.2 安装
代码语言:javascript
复制
// 以下两种方式任选其一
npm install sass-loader node-sass css-loader style-loader
// 或
yarn add sass-loader node-sass css-loader style-loader
1.3 webpack配置
代码语言:javascript
复制
// webpack.config.js
module: {
    rules: [
        {
            test: /\.scss$/,
            use: ['style-loader', 'css-loader', 'sass-loader']
        }
    ]
}
1.4 测试

写一段scss测试一下:

代码语言:javascript
复制
// style.scss
$default-color: #f00;
.main{
    &_banner{
        color: $default-color;
    }
}
代码语言:javascript
复制
// index.js
import './style.scss'
1.5 查看结果

从html中引入打包后的js,查看结果:

代码语言:javascript
复制
.main_banner {
    color: #f00; 
}

点击查看大图

1.6 其他配置

如果希望在浏览器的firebug里面查看及调试源码,则需要打开sourceMap配置:

代码语言:javascript
复制
module.exports = {
    entry: {
        index: './src/index.js',
    },

    output: {
        filename: '[name].js'
    },
    mode: 'development',

    // loader配置
    module: {
        rules: [
            // scss
            {
                test: /\.scss$/,
                use: [
                    'style-loader',
                    {
                        loader: 'css-loader',
                        options: {
                            sourceMap: true
                        }
                    },
                    {
                        loader: 'sass-loader',
                        options: {
                            sourceMap: true
                        }
                    }
                ]
            }
        ],
    },
}

2. Less

“Less也是对CSS的扩展。

2.1 安装
代码语言:javascript
复制
// 以下两种方式任选其一
npm install less-loader less css-loader style-loader
// 或
yarn add less-loader less css-loader style-loader
2.2 webpack配置

与SCSS配置比较类似:

代码语言:javascript
复制
modules: {
    rules: [
        {
            test: /\.less/,
            use: [
                'style-loader',
                    {
                        loader: 'css-loader',
                        options: {
                            sourceMap: true
                        }
                    },
                    {
                        loader: 'sass-loader',
                        options: {
                            sourceMap: true
                        }
                    }
            ]
        }
    ]
}
2.3 测试
代码语言:javascript
复制
// style.less
@default-color: red;
.main{
    .title{
        color: @default-color;
    }
}
代码语言:javascript
复制
// index.js
import './style.less'
2.4 编译结果

与SCSS一样,打包,引入,浏览器中查看结果:

代码语言:javascript
复制
.main .title{
    color: red;
}

小结

本篇介绍了处理样式的预处理器工具以及相关配置,通过SCSS、less等编译语言来提高CSS的开发效率且降低代码复杂度。

下一篇开始接触与性能相关的问题——代码分片。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 流眸 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 样式预处理
    • 1. Sass 与 SCSS
      • 1.1 关系
      • 1.2 安装
      • 1.3 webpack配置
      • 1.4 测试
      • 1.5 查看结果
      • 1.6 其他配置
    • 2. Less
      • 2.1 安装
      • 2.2 webpack配置
      • 2.3 测试
      • 2.4 编译结果
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档