博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单理解webpack处理css
阅读量:6162 次
发布时间:2019-06-21

本文共 3629 字,大约阅读时间需要 12 分钟。

引入css

  • style-loader 创建style标签,标签里面的内容就是css内容
  • css-loader 让js文件里import一个css进来,给css做一个包装,让js可以解析css代码

使用

1.安装cnpm install style-loader css-loader --save-dev

2.在webpack.config.js进行配置:

var path = require("path");module.exports = {    entry: {        "pageA": "./src/pageA.js",    },    output: {        path: path.resolve(__dirname, "./dist"),        filename: "[name].js",    },    module: {        rules: [{                test: /\.css$/,                use: [{                    loader: "style-loader"                }, {                    loader: "css-loader"                }]            }        ]    }}复制代码

3.在使用的js文件中引入相应的css文件(注意文件路径)

import './css/base.css'复制代码

4.注意在html文件中引入js的时候,是我们打包好的js文件哦!

5.接下来我们打包生成可以看到页面结构中用一个style标签生成

不常用的功能:

一、 style-loader/url :可以使页面中不仅仅插入一个style标签,也可以插入一个link标签

1.我们现来改变之前的webpack.config.js的配置:

module: {     rules: [{         test: /\.css$/,         use: [{             loader: "style-loader/url"         }, {             loader: "file-loader"         }]     }] }复制代码

2.安装 cnpm install file-loader ---save-dev

3.此时我们直接打包后会报一个错误,打包后的文件在dist文件目录下,引得文件并不是;

4.在webpack.config.js中改变一下出口文件的配置,然后重新打包就可以了。

output: {      path: path.resolve(__dirname, "./dist"),      publicPath:"./dist/",      filename: "[name].js",  },复制代码

这个弊端是插入多个样式,多个css打包的时候,会产生多个link标签,会产生多的网络请求,只是一个小众功能哦,大家了解即可!

二、 style-loader/useable

1.webpack.config.js的配置:

module: {      rules: [{          test: /\.css$/,          use: [{              loader: "style-loader/useable"          }, {              loader: "css-loader"          }]      }]  }复制代码

2.在引入的js文件中,会产生use()和unuse()两个方法,用来控制页面插入或者是不插入页面当中,下面这个是一个简单的小效果:

import base from './css/base.css';let flag = false;setInterval(function() {   if (flag) {       base.unuse()   } else {       base.use()   }   flag = !flag;}, 1000)复制代码

style-loader参数:

  • insertAt(插入位置)
  • insertInto(插入到某一个dom中)
  • singleton(是否使用一个style标签)
  • transform(转化,浏览器环境下,插入页面前)
    1.在webpack配置中:
module: {        rules: [{            test: /\.css$/,            use: [{                loader: "style-loader",                options: {                    insertInto: "#app", //插入#app内                    singleton: true, //多个style标签合为一个                    transform: "./css.transform.js" //css变形的函数,相对webpack.config.js相对路径,不是在打包的时候运行,是在style-loader帮我们把样式塞到里面执行,运行的时机是在浏览器环境下,可以拿到浏览器相关的参数,根据浏览器对css做一些形变,import有几个这个函数就执行了几次,对每一个文件都会执行一次                }            }, {                loader: "css-loader"            }]        }]    }复制代码

2.给大家简单看一下打包后的效果:

  • insertInto: "#app", //插入#app内
  • singleton: true, //多个style标签和为一个
  • transform: "./css.transform.js" (值是一个地址) css变形的函数,相对webpack.config.js相对路径,不是在打包的时候运行,是在style-loader帮我们把样式塞到里面执行,运行的时机是在浏览器环境下,可以拿到浏览器相关的参数,根据浏览器对css做一些形变,import有几个这个函数就执行了几次,对每一个文件都会执行一次;
    注意:打包后改变页面大小后,要重新刷新页面,才会有效果。

css-loader参数:

  • alias:(设置别名)
alias: {    '@': resolve('src')  }复制代码
  • importLoader(@import) 后面有其他的loader要处理再使用这个属性
  • minimize:(是否压缩) true/false
  • modules(是否启用css模块化)
    先来回忆一下css-modules有哪些属性:
    :local 给定一个本地的样式
    :global 给定一个全局的样式
    compose 继承一段样式
    compose ... from path 从某一个文件里面引入一个样式
    简单配置:
module: {        rules: [{            test: /\.css$/,            use: [{                loader: "style-loader",                options: {                    singleton: true,                }            }, {                loader: "css-loader",                options: {                    // minimize: true //css-loader 1.0.0 可以使用,2.0以上的版本不能使用                    modules: true,                    localIdentName: '[path][name]_[local]_[hash:base64:5]'//定义css编译出来的class类名                }            }]        }]    }复制代码

第一次写文章,请各位多多指点,不喜勿喷。每天进步一点点!谢谢大家!

转载于:https://juejin.im/post/5c3d538f51882525616dc689

你可能感兴趣的文章
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>
虚机不能启动的特例思考
查看>>
SQL Server编程系列(1):SMO介绍
查看>>
在VMware网络测试“专用VLAN”功能
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
也问腾讯:你把用户放在什么位置?
查看>>
CSS Sprites 样式生成工具(bg2css)
查看>>
[转]如何重构代码--重构计划
查看>>
类中如何对list泛型做访问器??
查看>>
C++解析XML--使用CMarkup类解析XML
查看>>
P2P应用层组播
查看>>
Sharepoint学习笔记—修改SharePoint的Timeouts (Execution Timeout)
查看>>
CSS引入的方式有哪些? link和@import的区别?
查看>>