带有webpack的车把-变量未传递到自定义帮助程序中

我的文件如下:

/assets
|- /templates
   |- /helpers
      |- iff.js
   |- /partials
      |- head.hbs
   |- chat.hbs
   |- index.hbs
|- /public
   |- chat.html <---- exported by webpack build command
   |- index.html <---- exported by webpack build command
|- webpack.config.js

在chat.hbs中,我包含了head.hbs,如下所示:

{{>head pageName='Chat Room'}} 

在index.hbs中,我包含了head.hbs,如下所示:

{{>head}} 

在head.hbs中,我将自定义帮助程序iff称为:

{{#iff pageName '!==' undefined}}
   <span> {{pageName}}</span>
{{/iff}}

自定义帮助程序iff.js如下:

module.exports = (a,operator,b,opts)=> {
    var bool = false;
    switch(operator) {
       case '==':
           bool = a == b;
           break;
       case '!==':
            bool = a !== b;
            break;
       case '>':
           bool = a > b;
           break;
       case '<':
           bool = a < b;
           break;
       default:
           throw "Unknown operator " + operator;
    }

    if (bool) {
        return opts.fn(this);
    } else {
        return opts.inverse(this);
    }
}

并设置自定义助手,如下所示:webpack.config.js:

const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: {
        'app': [
            './assets/js/app.js'
        ]
    },output: {
        path: path.join(__dirname,'public'),filename: 'js/[name].min.js'
    },optimization: {
        minimize: false
    },plugins: [
        new webpack.optimize.OccurrenceOrderPlugin(),new HtmlWebpackPlugin({
            template: './assets/templates/index.hbs',filename: 'index.html'
        }),new HtmlWebpackPlugin({
            template: './assets/templates/chat.hbs',filename: 'chat.html'
        })
    ],module: {
        rules: [{
            test: /\.(hbs|handlebars)$/,use: [{
                loader: "handlebars-loader",options: {
                    partialDirs: path.resolve(__dirname,'./assets/templates/partials'),knownHelpersOnly: false,helperDirs: path.resolve(__dirname,"./assets/templates/helpers")
                }
              }]
        }]
    }  
};

结果是: 对于index.html,{{#iff}}和{{/ iff}}块之间的元素无法呈现,这很好。 但是对于chat.html,{{#iff}}和{{/ iff}}之间的代码块在未传递变量pageName的情况下呈现。

我知道我可以自定义帮助程序,而不必使用{{/ iff}}结构。

但是我不知道有什么方法可以使其与服务器端node.js上的手柄一样工作。

LIQIAN456 回答:带有webpack的车把-变量未传递到自定义帮助程序中

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2835888.html

大家都在问