2016-07-29 108 views
0

我工作的一個節點/快遞/車把應用程序,我只是發現了有關自定義的助手,但我不知道在哪裏定義它們。節點/快速把手 - 在哪裏可以定義自定義的助手

我嘗試添加一些實際的視圖模板HBS文件中<script>標籤,像這樣:

<script type="text/javascript"> 
    Handlebars.registerHelper('if', function(conditional, options) { 
     console.log("IN HANDLEBARS HELPER"); 
     if (conditional) { 
      return options.fn(this); 
     } else { 
      return options.inverse(this); 
     } 
    }); 
</script> 

但我得到一個未捕獲的ReferenceError:未定義把手。

我也發現了這個JSFiddle,但我沒有任何看起來像我的應用程序代碼。我也看了十幾個教程,但他們幾乎說的官方文檔做同樣的事情。

所以我在哪裏包括在節點/快遞應用的正是這種代碼?

如果任何人都可以在這個問題上提供一些線索,我們將不勝感激。

編輯: 我不知道這是正確的方式,但你可以把它放在你的app.js您設置的視圖引擎後:

var hbs = require('hbs'); 

hbs.registerHelper('test', function(conditional, options) { 
    //do something 
    if (conditional) { 
    return options.fn(this); 
    } else { 
    return options.inverse(this); 
    } 
}); 

如果這是不正確或由於某種原因有問題,請讓我知道。

+0

如果您在服務器端渲染它,則需要在服務器上進行設置。 –

回答

1

我個人在根目錄下創建了一個助手文件夾,並將所有我的助手方法放在那裏。然後,您可以要求到您的app.js,並告訴您要使用的傭工該文件的HBS引擎。

// in app.js 

const hbsHelpers = require('./helpers/handlebars'); 
... 
app.engine('handlebars', exphbs({ 
    helpers: hbsHelpers 
}); 
0

此解決方案適用於我。

inside app.js 
below 
app.set('view engine', 'hbs'); 

//example get local date 

var hbs = require('hbs'); 

hbs.registerHelper('dateLocal', function(fecha) { 
    return new Date(fecha).toLocaleDateString(); 
});