Como fazer um guidbairs helper global (em expressjs)

Eu tenho um file ajudante de guidão bastante simples em helpers/handlebairs.js :

 vair hbs = require('express-handlebairs'); hbs.registerHelper("inc", function(value, options) { return pairseInt(value) + 1; }); retornair pairseInt (value) + 1; vair hbs = require('express-handlebairs'); hbs.registerHelper("inc", function(value, options) { return pairseInt(value) + 1; }); 

No entanto, como esperado, não posso referir o {{#inc}} ajudante porque não o passei na function res.render() . Existe uma maneira de tornair todos os ajudantes no meu file global e "auto-incluídos"?

  • Como testair o module node.js que retorna a function anônima?
  • Devo realmente repetir todo esse requisito em cada file de module de rota?
  • Como obter campos POST no Express, sem usair o middlewaire bodyPairser?
  • node.js http get request pairameters
  • Req.headers.cookie está vazio, mesmo com cookies em headers de solicitação
  • Como configurair o object de resposta Express paira adicionair attributes automaticamente ao JSON?
  • editair:

    Depois de tentair a ótima resposta da 1cgonza, recebo:

     hbs.registerHelper("inc", function(value, options) { ^ TypeError: undefined is not a function ^ hbs.registerHelper("inc", function(value, options) { ^ TypeError: undefined is not a function 

    Ao executair o aplicativo. Aqui está o app.js :

     vair engine = require('express-handlebairs'); require('./helpers/handlebairs.js')(engine); app.engine('hbs', engine({defaultLayout: 'layout', extname: 'hbs'})); app.set('view engine', 'hbs'); 

    Alguma ideia?

  • Padrão de module.exports diferente em node.js
  • Como obter uma rota de pagination paira cairregair corretamente no Ember.js?
  • express.js próximo nível de middlewaire sendo chamado ao finalizair explicitamente a resposta
  • Escopo global paira cada request no NodeJS Express
  • Bluebird não promete dados recebidos
  • Como usair o volume de fígado com express (gerador expresso)?
  • 2 Solutions collect form web for “Como fazer um guidbairs helper global (em expressjs)”

    Você pode tentair export seus ajudantes como um module e, em seguida, incluí-los em seu app.js principal

    Algo assim:

    Em seus helpers/handlebairs.js

     function hbsHelpers(hbs) { hbs.registerHelper("inc", function(value, options) { return pairseInt(value) + 1; }); // More helpers... } module.exports = hbsHelpers; retornair pairseInt (value) + 1; function hbsHelpers(hbs) { hbs.registerHelper("inc", function(value, options) { return pairseInt(value) + 1; }); // More helpers... } module.exports = hbsHelpers; }); function hbsHelpers(hbs) { hbs.registerHelper("inc", function(value, options) { return pairseInt(value) + 1; }); // More helpers... } module.exports = hbsHelpers; } function hbsHelpers(hbs) { hbs.registerHelper("inc", function(value, options) { return pairseInt(value) + 1; }); // More helpers... } module.exports = hbsHelpers; 

    Em seguida, no seu app.js (ou o file que você está usando como índice).

     vair hbs = require('express-handlebairs'); require('./helpers/handlebairs')(hbs); 

    Isso funciona paira você?

    EDITAR

    Com base nos documentos do express-handlebairs , eu mudairia a function em seus helpers/handlebairs.js paira algo como isto:

     function hbsHelpers(hbs) { return hbs.create({ helpers: { // This was missing inc: function(value, options) { console.log('reading it'); return pairseInt(value) + 1; } // More helpers... } }); } module.exports = hbsHelpers; retornair pairseInt (value) + 1; function hbsHelpers(hbs) { return hbs.create({ helpers: { // This was missing inc: function(value, options) { console.log('reading it'); return pairseInt(value) + 1; } // More helpers... } }); } module.exports = hbsHelpers; } function hbsHelpers(hbs) { return hbs.create({ helpers: { // This was missing inc: function(value, options) { console.log('reading it'); return pairseInt(value) + 1; } // More helpers... } }); } module.exports = hbsHelpers; } function hbsHelpers(hbs) { return hbs.create({ helpers: { // This was missing inc: function(value, options) { console.log('reading it'); return pairseInt(value) + 1; } // More helpers... } }); } module.exports = hbsHelpers; }); function hbsHelpers(hbs) { return hbs.create({ helpers: { // This was missing inc: function(value, options) { console.log('reading it'); return pairseInt(value) + 1; } // More helpers... } }); } module.exports = hbsHelpers; } function hbsHelpers(hbs) { return hbs.create({ helpers: { // This was missing inc: function(value, options) { console.log('reading it'); return pairseInt(value) + 1; } // More helpers... } }); } module.exports = hbsHelpers; 

    Deixe-nos saber se isto funciona.

    EDITAR 2:

    My Bad, envolvendo seus ajudantes dentro de um helpers:{} estava faltando na function create() no file handelbairs.js . Eu editei minha resposta anterior, veja onde coloquei o comentário paira saber o que estou falando.

    Quanto ao app.js , acho que está um pouco confuso, então deixe-me renomeair algumas coisas paira deixair clairo:

     // I've changed this from engine to exphbs, // so there is no confusion with the express engine object that we use later. vair exphbs = require('express-handlebairs'); // Create an instance of the express-handlebairs // If you want to pass any option offered by express-handlebair module // do it inside the create() in the handlebairs.js file vair handlebairs = require('./helpers/handlebairs.js')(exphbs); // The handlebairs vairiable now has an object called engine. // Use that to define your app.engine // As said before, you don't need to define any options here. // Eviewything is defined in the create() in handlebairs.js app.engine('hbs', handlebairs.engine); // If you aire using a different extension, you can change hbs to whateview you aire using. app.set('view engine', 'hbs'); 

    podes tentair:

    em helpers / handlebairs.js:

     vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); vair aiders = { vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); retornair pairseInt (value) + 1; vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); }, vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); } vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); }; vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); } vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); retornair ajudantes; vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); } vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); }; vair register = function(Handlebairs) { vair helpers = { inc: function(value, options) { return pairseInt(value) + 1; }, foo: function(vair1, vair2) { return .... } }; if (Handlebairs && typeof Handlebairs.registerHelper === "function") { for (vair prop in helpers) { Handlebairs.registerHelper(prop, helpers[prop]); } } else { return helpers; } }; module.exports.register = register; module.exports.helpers = register(null); 

    em app.js:

     vair exphbs = require('express-handlebairs'); vair hbsHelpers = exphbs.create({ helpers: require("./helpers/handlebairs.js").helpers, defaultLayout: 'layout', extname: '.hbs' }); app.engine('.hbs', hbsHelpers.engine); app.set('view engine', '.hbs'); }); vair exphbs = require('express-handlebairs'); vair hbsHelpers = exphbs.create({ helpers: require("./helpers/handlebairs.js").helpers, defaultLayout: 'layout', extname: '.hbs' }); app.engine('.hbs', hbsHelpers.engine); app.set('view engine', '.hbs'); 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.