webpack4系列教程,如何处理html中的视频文件地址?
发布于 作者:苏南大叔 来源:程序如此灵动~webpack
如何处理页面上常见的媒体文件呢?比如:mp3
、mp4
、avi
等。本文中,以mp4
文件为例,说明这个问题。利用的还是url-loader
。所以,请查看文末有关url-loader
的相关文章。
本文测试环境:win10
、node@14.2.0
、npm@6.14.4
、webpack@4.43.0
、url-loader@4.1.0
。本文相对简单,就仅仅需要注意:调用.mp4
等视频文件的方式即可。
配置webpack.config.js
本文需要安装url-loader
,安装命令如下:
npm i url-loader -D
接下来的操作,非常简单,在安装url-loader
的前提下,配置一下文件类型即可:webpack.config.js
:
const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin');
//...
module.exports = {
mode: 'production', // 环境
entry: {
//...
main: './src/main.js'
},
output: {
filename: 'js/[name].[hash:8].bundle.js',
path: path.resolve(__dirname, 'dist'),
},
plugins: [
new HtmlWebpackPlugin({
template: "./html/index.html", // 根据 目标文件生成 html
}),
//...
],
module: {
rules: [
//...
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
query: {
limit: 10000,
name: 'video/[name].[ext]',
esModule: false
}
},
]
//...
},
}
需要额外注意的是:esModule: false
,否则,得到的视频地址,可能是个[object]
。
这里配置视频和配置图片,几乎是一模一样的。图片里面展示了图片的一个配置格式,换成这种格式也是可以的。唯一区别就是要把limit
设置的大一些。
引入媒体文件
这里还是以前面的video
标签示意,注意:苏南大叔在这里使用了html-webpack-plugin
中的ejs
相关功能。例如:
<video poster="<%= require('../src/bg2.png')%>">
<source src="<%= require('../src/1.mp4')%>"/>
</video>
得到的编译结果如下:
<video poster="img/bg2.20daa.png">
<source src="video/1.mp4" />
</video>
当然,如果您没有在模版中使用require()
语句,而是使用html-loader
的话,本文的.mp4
处理机制,也是可以生效的。具体的可以参见下面的这个链接:
视频的limit
参数
和图片的处理配置一样,这里也有个limit
参数。如果小于等于这个数值,就会被内嵌到html
页面里面。(想想画面都很美,对吧?)相关链接:
页面上一直会有个警告信息,内容如下:
WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets:
video/1.mp4 (1.45 MiB)
WARNING in webpack performance recommendations:
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/
苏南大叔,觉得webpack
的善意提醒罢了,提示你不要加载过大的文件。不过,苏南大叔觉得,想让一个视频文件,很小的话,很难吧?暂时忽略这个warnning
吧。大家有好的见解么?欢迎留言给我。谢谢。
相关链接
- https://newsn.net/say/webpack-html-withimg-loader.html
- https://github.com/webpack-contrib/html-loader/issues/195
- https://github.com/webpack-contrib/html-loader/issues/138
- https://newsn.net/say/webpack-html-loader.html
- https://newsn.net/say/webpack-plugin-html.html
总结
本文相对简单,和webpack
处理图片的操作流程,基本上是相似的。 套路就是:
- 第一,建立文件关联(
mp4
=>url-loader
)。 - 第二,引入文件(
require
语句,或者webpack.config.js
中使用html-loader
自然引入)。 - 需要注意:配置
esModule: false
项目。
更多webpack
相关博客文字,请点击苏南大叔的链接:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。