我正在尝试弄清楚url-loader与file-loader之间的区别。什么是DataURl
?
url-loader与file-loader类似,但如果文件小于字节限制,则可以返回Data URL。
我正在尝试弄清楚url-loader与file-loader之间的区别。什么是DataURl
?
url-loader与file-loader类似,但如果文件小于字节限制,则可以返回Data URL。
url-loader
会将文件编码为 base64 并内联包含它们,而不是将它们作为单独的文件进行加载并发起另一个请求。
base64 编码的文件可能看起来像这样:
data:;base64,aW1wb3J0IFJlYWN0IGZ...
这将被添加到您的捆绑包中。
只是想要补充一下Jens的答案。
file-loader
会将文件复制到构建文件夹并在包含它们的位置插入链接。 url-loader
将整个文件字节内容编码为base64,并在包含它们的位置插入base64编码的内容。所以没有单独的文件。
它们主要都用于媒体资产,如图像。大多数情况下是图像。
这种技术可能会加快页面加载速度,因为向服务器下载文件的http请求较少。
同样重要的是,您可以为url-loader
指定大小限制。对于超出此大小的所有文件,它将自动退回到file-loader
:
{
test: /\.(png|jpg|gif)$/i,
use: [{
loader: 'url-loader',
options: {
limit: 8192 // in bytes
}
}]
}
data:[<mediatype>][;base64],<data>
import audio from '../assets/media/audio.mp3';
console.log('base64 of my audio: ', audio);
//with url-loader setup
//I will get something like "data:audio/mpeg;base64,xxx"
url-loader
处理的资产所需的所有数据。这就是为什么它们允许你设置限制的原因,因为你不想对200kb的图像进行base64编码,因为这将使你的bundle大小增加大约这么多。这对于小文件来说很好,可以减少请求的数量。 - jens