6

我相信我到处都看过,但我空手而归。我一直在使用从我的源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 在此先感谢。

4

3 回答 3

4

在 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',
})]

注意。不要使用options: { variable: 'data or xxx' }after ejs-loader,如果指定了变量,htmlWebpackPlugin将是未知的。

所以你需要在你的 webpack 配置中使用 html-webpack-plugin。并将对象放入 HtmlWebpackPlugin 的参数中。

于 2018-03-27T06:15:47.487 回答
1

我一直在寻找同样的东西。似乎模板可以访问作为对象传递给 html-webpack-plugin 的选项htmlWebpackPlugin.options对象。

包括例如。标题,您需要从模板中将其引用为htmlWebpackPlugin.options.title. 我不知道是否有任何方法可以以与插件无关的方式传递值,因此您可以titletitle在模板文件中一样引用。

于 2016-10-25T14:26:38.207 回答
1

轻松插入任何参数。

// 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 %>
于 2019-02-04T22:26:21.753 回答