我相信我到处都是,但我空手而归。
我一直在使用html-webpack-plugin
从我的源代码加载单个index.html
文件,但我的客户端已经有了一些本地化,我认为如果我可以动态添加它们会很棒。
所以我试图切换到使用带有html-webpack-plugin
的模板引擎,即ejs
,但我遇到了重大问题!
我希望html-webpack-plugin
呈现和.ejs
文件,我需要为.ejs
文件提供一个巨大的本地化对象。
我想要这样的事情:
<h1><%= header.title %></h1>
来自本地化.json
- 这样的文件:
{
"header": {
"title": "My Clients Super Awesome Website"
}
}
我尝试过使用两个不同的ejs webpack加载器,我根本无法弄清楚如何将一个简单的对象传递给ejs加载器,我可以在我的ejs文件中使用它。
希望你们有一些答案:D提前谢谢。
答案 0 :(得分:2)
<%= htmlWebpackPlugin.options.header.title %>
webpack.config.js中的
module: {
rules: [
{
test: /.ejs$/,
loader: 'ejs-loader'
}
]}
和
plugins: [
new HtmlWebpackPlugin({
header: {title: 'test'},
template: './index.ejs',
})]
的通知。不要在options: { variable: 'data or xxx' }
之后使用ejs-loader
,如果指定了变量,htmlWebpackPlugin
将是未知的。
因此,您需要在webpack配置中使用html-webpack-plugin。并将对象放入HtmlWebpackPlugin的参数。
答案 1 :(得分:1)
我一直在找同样的事情。似乎模板可以访问传递给html-webpack-plugin的选项对象htmlWebpackPlugin.options
对象。
包括例如。标题,您需要从模板中引用它htmlWebpackPlugin.options.title
。我不知道是否有任何方法可以以更多与插件无关的方式传递值,因此您只需在模板文件中将title
引用为title
即可。
答案 2 :(得分:0)
轻松插入任何参数。
// webpack.config.js
...
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'template/index.ejs',
templateParameters: {
'title': 'My Clients Super Awesome Website',
'episode: '2'
}
}),
...
<!-- index.ejs -->
<%= title %>
<%= episode %>