《乘风破浪学webpack(二)》

311 阅读2分钟

续《乘风破浪学webpack》

用一张图总结上篇webpack的内容:

代码仓库地址:

github.com/dandanloveJ…

一、loader和plugin区别

  1. 翻译:loader是加载器,plugin是插件
    中文解释:加载器就是用来加载文件的,

  2. 比如JS loader是用来加载JS的,把高级的JS转译成低版本的JS
    CSS loader就是用来加载CSS的

  3. 插件是用来加强webpack功能的,比如HTMLWebpackPlugin是用来加载HTML的,miniCssExtractPlugin可以把多个CSS文件合并成一个CSS文件 总的来说,加载器主要用来加载文件,而插件的功能更加丰富

目标七:用webpack加载scss

首先安装

yarn add --dev dart-sass
yarn add --dev sass-loader

配置:需要注意的是style-loader, css-loader, sass-loader的顺序不能错,否则会报错

sass-loader负责把sass编译成css, css-loader负责把css变成js, style-loader负责从js字符串生成style标签

module: {
        rules: [
            {
                test: /.s[ac]ss$/i,
                use: [
                  // Creates `style` nodes from JS strings
                    'style-loader',
                   // Translates CSS into CommonJS
                    'css-loader',
                    {	
                      // Compiles Sass to CSS
                        loader: 'sass-loader',
                        options: {
                            implementation: require('dart-sass'),
                        }
                    }
                ],
            }
        ]
  

目标八:用webpack加载less和stylus

安装:

yarn add --dev less-loader
yarn add --dev less

配置

module.exports = {
  module: {
    rules: [
       {
           test: /.less$/,
           loader: ['style-loader', 'css-loader', 'less-loader'] // compiles Less to CSS
       },
    ],
  },
};

安装:

yarn add --dev stylus stylus-loader

配置

module.exports = {
  module: {
    rules: [
       {
           test: /.styl$/,
           loader: ['style-loader', 'css-loader', 'stylus-loader'] // compiles stylus to CSS
       },
    ],
  },
};

目标九:用webpack加载图片

之前我们引入图片需要使用img标签

<img src='../..1.png'>

那么应该如何用webpack加载图片呢?

使用方法:用file-loader

参考官方文档:webpack.js.org/guides/asse…

首先需要安装

yarn add --dev file-loader

然后需要配置

webpack.config.js

module.exports = {
  module: {
    rules: [
       {
            test: /.(png|svg|jpg|gif)$/,
            use: ['file-loader',]
       },
    ],
  },
};

然后在Index.js里写:

注意创建一个新的图片标签是

document.createElement('img') 是img!!!不是image!!!

或者用new Image()

import css2 from './y.styl'
import image1 from './assets/cat.jpg'

const div = document.querySelector("#app")  // 选中一个已经在index.html里的div元素
const myimage = new Image() 创建一个新的
myimage.src = image1
div.appendChild(myimage)

然后再 yarn start 就可以在生成的页面里看到图片了

目标十:用webpack懒加载

怎么实现一个懒加载

  1. 用import 括号 里面写加载的文件
  2. 然后会得到一个promise
  1. promise.then()有两个函数,第一个函数里写如果执行成功做什么,第二个函数写如果执行失败做什么

举例:

首先我们准备一个lazy.js:

export default function lazy(){
    console.log('我是一个懒加载的模块')
}

然后在index.js里写:

button.onclick = ()=>{
    const promise = import('./lazy')
    promise.then((module)=>{
        let fn = module.default
        fn()
        // 也可以直接 module.default()
    }, ()=>{
        console.log('加载失败')
    })
}

下面的图片记录了当我们点击 ‘懒加载’按钮之后 网络请求和控制台的变化

本文为fjl的原创文章,著作权归本人和饥人谷所有,转载务必注明来源