使用 html-webpack-plugin 将对象传递给 ejs 加载器
Passing an object to an ejs loader, using html-webpack-plugin
我想我到处都找过了,但还是两手空空。
我一直在使用 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 提前致谢。
我也在找同样的东西。似乎模板可以访问传递给 html-webpack-plugin 的选项 object 作为 htmlWebpackPlugin.options
object。
包括例如。标题,您需要从模板中将其引用为 htmlWebpackPlugin.options.title
。我不知道是否有任何方法可以以更多 plugin-agnostic 方式传递值,因此您可以在模板文件中将 title
引用为 title
。
在index.ejs
<%= htmlWebpackPlugin.options.header.title %>
在webpack.config.js
module: {
rules: [
{
test: /.ejs$/,
loader: 'ejs-loader'
}
]}
和
plugins: [
new HtmlWebpackPlugin({
header: {title: 'test'},
template: './index.ejs',
})]
通知。不要在ejs-loader
之后使用options: { variable: 'data or xxx' }
,如果指定变量,htmlWebpackPlugin
将是未知的。
所以你需要在你的 webpack 配置中使用 html-webpack-plugin。并将对象放入HtmlWebpackPlugin的参数中。
轻松插入任何参数。
// 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 %>
我想我到处都找过了,但还是两手空空。
我一直在使用 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 提前致谢。
我也在找同样的东西。似乎模板可以访问传递给 html-webpack-plugin 的选项 object 作为 htmlWebpackPlugin.options
object。
包括例如。标题,您需要从模板中将其引用为 htmlWebpackPlugin.options.title
。我不知道是否有任何方法可以以更多 plugin-agnostic 方式传递值,因此您可以在模板文件中将 title
引用为 title
。
在index.ejs
<%= htmlWebpackPlugin.options.header.title %>
在webpack.config.js
module: {
rules: [
{
test: /.ejs$/,
loader: 'ejs-loader'
}
]}
和
plugins: [
new HtmlWebpackPlugin({
header: {title: 'test'},
template: './index.ejs',
})]
通知。不要在ejs-loader
之后使用options: { variable: 'data or xxx' }
,如果指定变量,htmlWebpackPlugin
将是未知的。
所以你需要在你的 webpack 配置中使用 html-webpack-plugin。并将对象放入HtmlWebpackPlugin的参数中。
轻松插入任何参数。
// 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 %>