3-1 Loader是什么

1. 簡介

本節(jié)開始介紹Loader的概念和配置。

2. 非js文件的打包

前面說過,webpack 是一個現(xiàn)代 JavaScript 應用程序的靜態(tài)模塊打包器(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'
            }
        }]
    }
};

運行后發(fā)現(xiàn)打包成功:


image.png

但是,打開如下目錄的index.html發(fā)現(xiàn):


image.png

圖片沒有,失敗原因是404,證明src路徑有誤。仔細看,發(fā)現(xiàn)是層級的問題。因為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);
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 版權聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉載。 webpack介紹和使用 一、webpack介紹 1、由來 ...
    it筱竹閱讀 11,458評論 0 21
  • GitChat技術雜談 前言 本文較長,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,891評論 7 110
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,665評論 2 71
  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,441評論 4 31
  • 最近接了一個外包的小項目,一個月的開發(fā)周期,急急忙忙的完成后,寫下一點心得。 1. 前期準備 1.1 預估項目難度...
    _proto_麻瓜一袁閱讀 693評論 0 0

友情鏈接更多精彩內容