3-1 Loader是什么

1. 简介

本节开始介绍Loader的概念和配置。

2. 非js文件的打包

前面说过,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler),我们也看到了webpack对js文件的打包功效和基础配置。
但是,前端代码并不只有JS,还有比如html,css和图片文件等。这个时候,webpack能否成功打包呢?
我们来试一下,改写content.js如下:

// content.js
import timg from './img/timg.jpeg';
export default function Content() {
    var dom = document.getElementById('root');
    var content = document.createElement('img');
    content.src = timg;
    dom.appendChild(content);
}

运行结果如图:


image.png

可以看到./src/img/timg.jpeg这个文件打包失败,并且error中还有提示,建议尝试使用合适的loader来处理这种类型的文件。

3. 尝试使用Loader

我们按照建议尝试使用loader。对于图片文件,我们使用最普通的file-loader即可。其用法和介绍在此file-loader
安装file-loader后,配置如下:

const path = require('path');

module.exports = {
    entry: './src/index.js',
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'build')
    },
    module: {
        rules: [{
            test: /\.(jpg|jpeg|png|gif)$/,
            use: {
                loader: 'file-loader'
            }
        }]
    }
};

运行后发现打包成功:


image.png

但是,打开如下目录的index.html发现:


image.png

图片没有,失败原因是404,证明src路径有误。仔细看,发现是层级的问题。因为src指定的路径是相对html所在目录径来查找的,但是此时实际的资源路径在webpackconfig.js文件中是指定的output.path中。
如图修改即可(后面我介绍更合理的方法):

// content.js
import timg from './img/timg.jpeg';
import { output } from '../webpack.config'
export default function Content() {
    var dom = document.getElementById('root');
    var content = document.createElement('img');
    console.log(output.path);
    content.src = `.${output.path}/${timg}`;
    dom.appendChild(content);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,428评论 0 21
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,845评论 7 110
  • webpack 介绍 webpack 是什么 为什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert阅读 6,657评论 2 71
  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 5,431评论 4 31
  • 最近接了一个外包的小项目,一个月的开发周期,急急忙忙的完成后,写下一点心得。 1. 前期准备 1.1 预估项目难度...
    _proto_麻瓜一袁阅读 690评论 0 0

友情链接更多精彩内容