Webpack: включить частичку html в другую частичку?
Есть ли способ включить html частичку в другую частичку, используя webpack? Я использую html-загрузчик для этого:
index.html
<%= require('html-loader!./partials/_header.html') %>
Но когда я пытаюсь включить другой фрагмент в _header.html, он не может его отобразить.
Это не работает:
_header.html
<%= require('html-loader!./partials/_nav.html') %>
2 ответа
Я немного совмещал и смог найти решение.
index.html
<%= require('html-loader?root=.&minimize=true&interpolate!./partials/_header.html') %>
а затем в _header.html
${require('html-loader?root=.!../partials/_nav.html')}
С помощью html-loader
с interpolate
вариант.
https://github.com/webpack-contrib/html-loader
{ test: /\.(html)$/,
include: path.join(__dirname, 'src/views'),
use: {
loader: 'html-loader',
options: {
interpolate: true
}
}
}
И затем в html-страницах вы можете импортировать переменные html и javascript.
<!-- Importing top <head> section -->
${require('./partials/top.html')}
<title>Home</title>
</head>
<body>
<!-- Importing navbar -->
${require('./partials/nav.html')}
<!-- Importing variable from javascript file -->
<h1>${require('../js/html-variables.js').hello}</h1>
<!-- Importing footer -->
${require('./partials/footer.html')}
</body>
</html>
html-variables.js
выглядит так:
const hello = 'Hello!';
const bye = 'Bye!';
export {hello, bye}
Вы также можете включить частичные элементы в другой частичный таким же образом, используя ${require('path/to/your/partial.html')
,
Единственным недостатком является то, что вы не можете импортировать другие переменные из HtmlWebpackPlugin
как это <%= htmlWebpackPlugin.options.title %>
(по крайней мере, я не могу найти способ их импортировать), просто напишите название в html или используйте отдельный файл javascript для обработки переменных, если это необходимо.