zoukankan      html  css  js  c++  java
  • 04webpack样式、图片处理

    样式处理

    css-loader style-loader插件

    1. 安装css-loader style-loader
      npm install css-loader style-loader -D

    2. 在webpack.config.js中添加配置

    // 详细loader配置
    // 规则 css-loader 连续 @import这种语法的
    // style-loader 它是把CSS插入到head的标签中
    // loader的特点 希望单一
    // { test: /.css$/, use: 'css-loader'}
    // loader的用法 字符串只用一个loader
    // 多个loader需要 []
    // loader的顺序 默认是从右到左执行 从下到上执行
    // { test: /.css$/, use: ['style-loader','css-loader']}
    // loader还可以写成 对象方式 多写个参数,方便传参
    {
    	// 匹配哪些文件
        test: /.css$/,
        use: [
            {
                loader: 'style-loader'
            },
            {
                loader: 'css-loader',
                options: {
                    modules: true
                }
            }
        ]
    }
    

    less-loader插件

    1. 安装less-loader
      npm install less less-loader -D

    2. 在webpack.config.js中添加配置
      执行顺序是从右向左,从下到上

    {
        // 可以处理less文件,还有sass stylus  node-sass sass-loader
        // stylus stylus-loader
        test: /.less$/,
        use: [
            {
                loader: 'style-loader'
            },
            {
                loader: 'css-loader', // @import 解析import路径
                options: {
                    modules: true
                }
            },
            {
                loader: 'less-loader' // 把less -> css  先解析less再执行css
            }
        ]
    }
    

    抽离CSS插件:mini-css-extract-plugin插件

    1. 安装mini-css-extract-plugin
      npm install mini-css-extract-plugin -D
    2. 在webpack中引用mini-css-extract-plugin插件
      let MiniCssExtractPlugin = require("mini-css-extract-plugin");
      3.在webpack.config.js中配置相应的参数
      A.在plugins中配置相应的插件
    plugins:[ // 数组 放着所有的插件
        new MiniCssExtractPlugin({
            filename: 'main.css'
        })
    ],
    

    B.module中配置相应的配置

    module: { //模块
        rules: [ 
            {
                // 匹配哪些文件
                test: /.css$/,
                // 使用哪些loader进行处理
                use: [
                    // 创建style标签,将js中的样式资源插入进去,添加到head中生效
                    // 'style-loader',
                    // 这个loader取代style-loader,作用:提取js中css成单独css文件
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'postcss-loader' // 把less -> css  先解析less再执行css
                ]
            }
        ]
    }
    

    样式前缀插件:postcss-loader autoprefixer

    1. 安装postcss-loader autoprefixer
      npm install postcss-loader autoprefixer -D

    图片处理

    打包图片资源:url-loader file-loader

    1. 安装url-loader file-loader
      npm install url-loader file-loader -D
      2.在webpack.config.js中配置相应的参数
    module: { //模块
        rules: [ 
            {
                // 匹配哪些文件
                test: /.css$/,
                // 使用哪些loader进行处理
                use: [
                    // 创建style标签,将js中的样式资源插入进去,添加到head中生效
                    'style-loader',
                    'css-loader',
                    'postcss-loader' // 把less -> css  先解析less再执行css
                ]
            },
            {
                // 处理图片资源
                test: /.(jpg|png|gif)$/,
                // 使用一个loader
                // 下载 url-loader file-loader
                loader: 'url-loader',
                options: {
                    // 图片大小小于8kb,就会被base64处理
                    // 有点:减少请求数量(减轻服务器压力)
                    // 缺点:图片体积会更大(问价请求速度更慢)
                    limit: 8 * 1024
                }
            }
        ]
    }
    

    注意:默认处理不了html中image图片,如果需要处理html中的文件,还要下载html-loader插件,相关配置如下

    module: { //模块
        rules: [ 
            // 详细loader配置
            // 规则 css-loader 连续 @import这种语法的
            // style-loader 它是把CSS插入到head的标签中
            // loader的特点 希望单一
            // { test: /.css$/, use: 'css-loader'}
            // loader的用法 字符串只用一个loader
            // 多个loader需要 []
            // loader的顺序 默认是从右到左执行 从下到上执行
            // { test: /.css$/, use: ['style-loader','css-loader']}
            // loader还可以写成 对象方式 多写个参数,方便传参
            {
                // 匹配哪些文件
                test: /.css$/,
                // 使用哪些loader进行处理
                use: [
                    // 创建style标签,将js中的样式资源插入进去,添加到head中生效
                    'style-loader',
                    'css-loader',
                    'postcss-loader' // 把less -> css  先解析less再执行css
                ]
            },
            {
                // 可以处理less文件,还有sass stylus  node-sass sass-loader
                // stylus stylus-loader
                test: /.less$/,
                use: [
                    'style-loader',
                    'css-loader',
                    'postcss-loader', // 把less -> css  先解析less再执行css
                    'less-loader' // 把less -> css  先解析less再执行css
                ]
            },
            {
                // 问题:默认处理不了html中image图片
                // 处理图片资源
                test: /.(jpg|png|gif)$/,
                // 使用一个loader
                // 下载 url-loader file-loader
                loader: 'url-loader',
                options: {
                    // 图片大小小于8kb,就会被base64处理
                    // 有点:减少请求数量(减轻服务器压力)
                    // 缺点:图片体积会更大(问价请求速度更慢)
                    limit: 8 * 1024,
                    // 问题:因为url-loader默认使用es6模块化解析,而html-loader引入图片是common.js
                    // 解析时会出问题:[object Module]
                    // 解决:关闭url-loader的es6模块化,使用common.js解析
                    esModule: false,
                    // 给图片进行重命名
                    // [hash:10]取图片的hash的前10位
                    // [ext]取文件原来扩展名
                    name:'[hash:10].[ext]'
                }
            },
            {
                test: /.html$/,
                // 处理html文件的img图片(负责引入img,从而能被url-loader进行处理)
                loader: 'html-loader'
            }
        ]
    }
    
  • 相关阅读:
    页面引入js问题
    python之循环语句与注释
    python之字符串格式化方法
    python之对象的方法
    python之函数
    python之条件判断
    python之布尔表达式
    python之列表与元组
    python之字符串
    搞不明白的recycling process 和 finalization process
  • 原文地址:https://www.cnblogs.com/lhongsen/p/13233518.html
Copyright © 2011-2022 走看看