Webpack基础应用篇 - [7] 资源模块

1.5 资源模块

目前为止,我们的项目可以在控制台上显示 “Hello world~~~”。现在我们尝试混合一些其他资源,比如 images,看看 webpack 如何处理。

在 webpack 出现之前,前端开发人员会使用 gruntgulp 等工具来处理资源,并将它们从 /src 文件夹移动到 /dist/build 目录中。webpack 最出色的功能之一就是,除了引入 JavaScript,还可以内置的资源模块 Asset Modules 引入任何其他类型的文件

资源模块(asset module)是一种模块类型,它允许我们应用Webpack来打包其他资源文件(如字体,图标等)

资源模块类型(asset module type),通过添加 4 种新的模块类型,来替换所有这些 loader:

  • asset/resource 发送一个单独的文件并导出 URL。
  • asset/inline 导出一个资源的 data URI。
  • asset/source 导出资源的源代码。
  • asset 在导出一个 data URI 和发送一个单独的文件之间自动选择。

1.5.1 Resource 资源

修改 webpack.config.js配置:

// 配置资源文件
  module: {
   
    rules: [{
   
      test: /\.png/,
      type: 'asset/resource'
    }]
  },

06-asset-modules/webpack.config.js

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
    
//...

// 配置资源文件
 module: {
    
   rules: [{
    
     test: /\.png/,
     type: 'asset/resource'
   }]
 },
	 //...
}

准备资源文件,在入口文件中引入,并显示在页面上:

请添加图片描述

06-asset-modules/src/index.js

// 导入函数模块
import helloWorld from './hello-world.js'
import imgsrc from './assets/img-1.png'

helloWorld()

const img = document.createElement('img')
img.src = imgsrc
document.body.appendChild(img)

执行打包命令:

[felix] 06-asset-modules $ npx webpack
asset 8ec2798f81f4745a7c9b.png 101 KiB [emitted] [immutable] [from: src/assets/img-1.png] (auxiliary name: main)
asset bundle.js 10.5 KiB [emitted] (name: main)
asset app.html 326 bytes [emitted]
runtime modules 1.72 KiB 5 modules
cacheable modules 388 bytes (javascript) 101 KiB (asset)
  ./src/index.js 208 bytes [built] [code generated]
  ./src/hello-world.js 138 bytes [built] [code generated]
  ./src/assets/img-1.png 42 bytes (javascript) 101 KiB (asset) [built] [code generated]
webpack 5.54.0 compiled successfully in 114 ms

发现图片(.png)文件已经打包到了dis目录下:

请添加图片描述

执行启动服务命令:

请添加图片描述

打开浏览器:

请添加图片描述

  • 自定义输出文件名

    默认情况下,asset/resource 模块以 [contenthash][ext][query] 文件名发送到输出目录。

    可以通过在 webpack 配置中设置 output.assetModuleFilename<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值