html-webpack-plugin之配置自定義模板
主要內容:
- inject: true | body | head |false
- chunks:允許插入到模板中的一些chunk,不配置此項預設會將entry中所有的thunk注入到模板中。在配置多個頁面時,每個頁面注入的thunk應該是不相同的,需要通過該配置為不同頁面注入不同的thunk。
- excludeChunks:這個與chunks配置項正好相反,用來配置不允許注入的thunk。
-
true|body
: 所有JavaScript資源插入到body元素的底部 -
head
: 所有JavaScript資源插入到head元素中。 -
false
:所有靜態資源css和JavaScript都不會注入到模板檔案中,一般需要自定義模板配置的時候使用。
一般我們基本不會設定js在head裡面,會導致最外層的例項化掛載失敗(就是查詢不到dom)。
var HtmlWebpackPlugin = require('html-webpack-plugin')
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html', //本地自定義模板
inject: true|body
})
一般形式
如果設定為false會如何?
我們可以試一下,無疑,頁面肯定是出不來的。
什麼情況下我們會設定為false呢?
我們一步步往下看
- 配置多個html頁面
html-webpack-plugin的一個例項生成一個html檔案,如果單頁應用中需要多個頁面入口,或者多頁應用時配置多個html時,那麼就需要例項化該外掛多次;
如上面所述,頁面設定了不同的模板;在專案中,我們也可以所有的頁面用同一個模板。
除了上面這種配置方式,還有另外一種配置自定義模板的方式可以實現需求。具體的做法,藉助於模板引擎來實現,例如外掛沒有配置loader時預設支援的ejs模板引擎,下面就以ejs模板引擎為例來說明。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><%= htmlWebpackPlugin.options.title %></title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
<meta name="keywords" content="" />
<meta name="description" content="運營管理系統" />
<% for (var css in htmlWebpackPlugin.files.css) { %>
<link href="<%=htmlWebpackPlugin.files.css[css] %>" rel="stylesheet">
<% } %>
</head>
<body>
<div id="app"></div>
<script>
</script>
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
<script type="text/javascript" src="<%=htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
<% } %>
</body>
</html>
htmlWebpackPlugin其實這是html-webpack-plugin外掛在生成html檔案過程中產生的資料,這些資料對html模板檔案是可用的。
<script>
var json = JSON.parse('<%= JSON.stringify(htmlWebpackPlugin)%>')
console.log(json)
</script>
相關文章
- 自定義 Word 模板
- Hexo 主題開發之自定義模板Hexo
- 建立自定義專案模板
- dedecms模板自定義相關
- 08.Django自定義模板,自定義標籤和自定義過濾器Django過濾器
- MyBatis-Plus Generator自定義模板MyBatis
- .NET Core - 自定義專案模板
- Xcode 自定義模板實踐XCode
- IDEA自定義註釋模板Idea
- ASP.NET Core - 配置系統之自定義配置提供程式ASP.NET
- 自定義AndroidStudio程式碼模板Android
- 自定義Vue-cli專案模板Vue
- Laravel學習筆記之Artisan命令生成自定義模板的方法Laravel筆記
- 分散式監控系統之Zabbix巨集、模板和自定義item分散式
- 如何自定義自己的vue-cli模板Vue
- 自定義Android Studio程式碼模板Android
- 易優cms模板在哪自定義表單
- php 自定義配置檔案PHP
- 打包策略 自定義打包配置
- MapReduce之自定義OutputFormatORM
- MapReduce之自定義InputFormatORM
- 自定義View之SwitchViewView
- MapReduce之自定義partitioner
- Iceworks 2.8.0 釋出,自定義你的 React 模板React
- OpenAPI生成器中實現自定義模板API
- Django自定義模板標籤與過濾器Django過濾器
- Android自定義控制元件之自定義屬性Android控制元件
- samba 基本配置及自定義控制Samba
- docker官方mysql映象自定義配置DockerMySql
- C#建立自定義配置節C#
- 利用Apache配置本地 自定義域名Apache
- VS2019 自定義專案模板
- Mybaitis之自定義TypeHandlerAI
- Java之自定義異常Java
- 自定義View之onMeasure()View
- 如何自定義終端顯示配置
- Yii自定義配置檔案存放方法
- Django學習——Django settings 原始碼、模板語法之傳值、模板語法之獲取值、模板語法之過濾器、模板語法之標籤、自定義過濾器、標籤、inclusion_tag、模板的匯入、模板的繼承Django原始碼過濾器繼承