<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>资源注入 on ZiYang FrontEnd Interview</title><link>https://fe-interview.pangcy.cn/tags/%E8%B5%84%E6%BA%90%E6%B3%A8%E5%85%A5/</link><description>Recent content in 资源注入 on ZiYang FrontEnd Interview</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 06 Mar 2025 13:07:39 +0800</lastBuildDate><atom:link href="https://fe-interview.pangcy.cn/tags/%E8%B5%84%E6%BA%90%E6%B3%A8%E5%85%A5/index.xml" rel="self" type="application/rss+xml"/><item><title>html-webpack-plugin的作用与配置</title><link>https://fe-interview.pangcy.cn/docs/engineering/webpack/webpack-28/</link><pubDate>Wed, 05 Mar 2025 09:59:05 +0000</pubDate><guid>https://fe-interview.pangcy.cn/docs/engineering/webpack/webpack-28/</guid><description>&lt;h2 id="考察点分析">考察点分析 &lt;a href="#%e8%80%83%e5%af%9f%e7%82%b9%e5%88%86%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>&lt;strong>核心能力维度&lt;/strong>：&lt;/p>
&lt;ol>
&lt;li>Webpack生态工具链理解（插件机制与构建流程）&lt;/li>
&lt;li>多页面应用配置能力（MPA架构实践）&lt;/li>
&lt;li>工程化配置技巧（动态模板处理与变量替换）&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>技术评估点&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>插件核心作用（资源注入与HTML生成）&lt;/li>
&lt;li>多入口动态配置实现&lt;/li>
&lt;li>自定义模板变量处理方法&lt;/li>
&lt;li>资源路径控制（publicPath与CDN适配）&lt;/li>
&lt;li>构建产物优化配置（压缩/缓存策略）&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="技术解析">技术解析 &lt;a href="#%e6%8a%80%e6%9c%af%e8%a7%a3%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="关键知识点">关键知识点 &lt;a href="#%e5%85%b3%e9%94%ae%e7%9f%a5%e8%af%86%e7%82%b9" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>&lt;strong>自动资源注入&lt;/strong>：通过自动分析entry与chunk关系，将带有哈希的JS/CSS文件注入HTML&lt;/li>
&lt;li>&lt;strong>模板引擎集成&lt;/strong>：支持EJS/Pug等模板语法实现动态HTML生成&lt;/li>
&lt;li>&lt;strong>多页面模式&lt;/strong>：通过循环entry配置生成多个插件实例&lt;/li>
&lt;li>&lt;strong>路径控制&lt;/strong>：配合output.publicPath解决CDN部署问题&lt;/li>
&lt;/ol>
&lt;h3 id="原理剖析">原理剖析 &lt;a href="#%e5%8e%9f%e7%90%86%e5%89%96%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;p>插件通过监听Webpack的&lt;code>emit&lt;/code>阶段钩子，在内存中创建HTML文件。其工作流程：&lt;/p>
&lt;ol>
&lt;li>解析模板文件中的&lt;code>&amp;lt;%= %&amp;gt;&lt;/code>语法&lt;/li>
&lt;li>注入已排序的chunks资源（通过dependency graph分析）&lt;/li>
&lt;li>应用minify配置进行HTML压缩&lt;/li>
&lt;li>输出到output.path指定目录&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>常见误区&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>混淆entry chunks与html-webpack-plugin chunks配置&lt;/li>
&lt;li>未设置publicPath导致资源404&lt;/li>
&lt;li>多个页面未指定chunks导致资源冗余&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="问题解答">问题解答 &lt;a href="#%e9%97%ae%e9%a2%98%e8%a7%a3%e7%ad%94" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>&lt;code>html-webpack-plugin&lt;/code>是Webpack生态核心插件，主要解决：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>自动资源注入&lt;/strong>：自动将打包生成的JS/CSS资源路径注入HTML，支持哈希指纹与CDN路径&lt;/li>
&lt;li>&lt;strong>模板生成&lt;/strong>：支持EJS等模板引擎，通过&lt;code>&amp;lt;%= htmlWebpackPlugin.options.var %&amp;gt;&lt;/code>实现动态内容&lt;/li>
&lt;li>&lt;strong>多页面配置&lt;/strong>：通过创建多个插件实例并关联不同entry chunks&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>多页面配置示例&lt;/strong>：&lt;/p>



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="d8de087" class="language-javascript ">
 &lt;code>// webpack.config.js
const pages = [&amp;#39;home&amp;#39;, &amp;#39;about&amp;#39;].map(name =&amp;gt; ({
 template: `./src/${name}.html`,
 filename: `${name}.html`,
 chunks: [name] // 关联对应entry
}));

module.exports = {
 entry: {
 home: &amp;#39;./src/home.js&amp;#39;,
 about: &amp;#39;./src/about.js&amp;#39;
 },
 plugins: [
 ...pages.map(p =&amp;gt; new HtmlWebpackPlugin(p))
 ]
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;p>&lt;strong>自定义变量处理&lt;/strong>：&lt;/p></description></item></channel></rss>