Tag: handlebars.js

Node.js + Handlebars + Express如何引用句柄模板?

我相对新的Node&Express,但句柄模板,我从来没有用过,并试图引用他们在我的节点app.js,但我一直得到以下错误 对象#的属性“引擎”不是一个函数 这是我的代码: app.configure(function () { app.set('views', __dirname+ '/views'); app.set('port', 3000); app.set('view engine', 'handlebars'); app.use(handlebarsLayout); app.use(express.static(path.join(__dirname, 'public'))); app.use(app.router); }); // ROUTES app.get('/', function (req, res){ var data = { title: "Node + Handlebars", body: "Hello World!" } res.render('index', data); }); http.createServer(app).listen(app.get('port'), function () { console.log("Express server listening on port " + app.get('port')); }); 任何帮助将不胜感激。 谢谢,汤姆

使用handlebars.js显示JSON数据

我需要弄清楚如何将完整的JSON响应打印到我的页面上(甚至是其中的一部分),但我似乎无法弄清楚。 我将最终填写更多的上下文页面。 JS文件: app.get('/', function(req, res) { var context apiLib.fetch('acct:chars', function(err, result){ if(err) throw err context = result; console.log(result); res.render('/', context); }); }); 把手: {{#each context.characters}} {{this.name}} {{/each}} JSON数据: { "result": { '1234':{ //this is the character ID "characters": { "name": 'Daniel', "CharacterID": '1234' etc… } } } 我的页面什么也不打印,但控制台logging一切。 我正在使用express.js来处理路由。

无法加载Handlebars帮助器function

我正在尝试创build一个自定义的hbs帮助器,并在我的express.js应用程序的页面中使用它。 这是我如何做,但它一直说: 缺less帮手“if_eq” 我的页面: <html> <head> <script src="javascripts/handlebars-v4.0.6.js" type="text/javascript"></script> <script src="javascripts/hbs_funcs.js"></script> </head> <body> {{#if_eq page "home"}} <li class="active"><a href="/home ">LOBBY</a></li> {{else}} <li><a href="/home ">LOBBY</a></li> {{/if_eq}} </body> </html> 这是我的hbs js文件: Handlebars.registerHelper('if_eq', function (a, b, opts) { if (a == b) // Or === depending on your needs return opts.fn(this); else return opts.inverse(this); });

在哪里把把手模板在nodejs + emberjs应用程序?

我试图在基于Node + Express的项目中使用Ember。 我将客户端代码放在public / javascript下,并使用每个express项目中默认的index.jade文件提供。 我需要为我的客户端视图使用handlebars模板,但我无法弄清楚如何做到这一点。 我应该在哪里放置我的模板文件以及节点服务器如何编译并提供服务? 谢谢!

其中的JavaScript模板引擎嵌套适合生成JSON

小胡子和把手都很棒。 我喜欢他们为他们的个人简单和卓越。 小胡子,因为它是一个单一的模板在很多地方和把手,因为它只提供了更多的function。 我面临的挑战是他们似乎已经实现了输出HTML或其他文档结构的标签是成对的,没有分隔符。 为了进一步澄清,如果你有一个项目的数组将会在列表中输出,那么这个效果很好: <ul> {{#each items}} <li>{{name}}</li> {{/each}} </ul> 这很好。 但是如果你想输出类似JSON的东西: [ {{#each items}} { name:{{name}} } {{/each}} ] 这不起作用,因为JSON需要逗号分隔列表中的项目。 而且你不能在最里面的'}'后面加一个逗号,因为这也会导致错误。 有几个post/build议,人们已经要求将可选的分隔符属性添加到#each或添加#join。 一位提交者表示,它应该作为一个插件来实现,因为核心需要简单。 抛开政治。 能够将JavaScript对象格式化为JSONstring似乎非常适合模板。 **最后一个想法。 实际上可能有更好的JavaScript成语来重新格式化一个JavaScript对象。 我想这也是有趣的考虑。 PS:我喜欢这个模板的原因之一是因为它变成了自我logging。 更新: @Kevin在handlebarsjs团队能够创build一个“助手”function,实现了我失踪的function。 这不是很快,但它代码的工作: [ {{#join items sep=','}} { name:{{name}} } {{/join}} ]

把手SWAG图书馆

我是Handlebars中的新手,我正在尝试使用SWAG库进行自定义帮助程序,但未成功。 例如,我尝试显示在我的file.handlebars {{小写“BENDER SHOULD NOT BE BE ALLOWED ON”}} ,我得到错误错误:无法find属性'小写'我跑npm安装赃物 我的app.js是: var express = require('express') , http = require('http') , routes = require('./routes') , path = require('path') ,Swag = require('swag') , handlebars = require('handlebars'); var app = express(); var engines = require('consolidate'); app.engine('handlebars', engines.handlebars); app.configure(function() { app.set('view engine', 'handlebars'); app.set('views', __dirname + '/views'); app.set('port', process.env.PORT […]

用node + express中的新数据更新句柄模板

我已经设法让我的句柄工作在一个节点+快递的应用程序,并根据哈希标签,我没有检索到任何问题,并在第一次在页面上的鸣叫呈现第一时间没有问题的加载数据。 我现在的问题是试图用新的推文来更新模板。 我有我的路线下面的代码: new twitter.TwitterStream().getHashTagStream(tweetsRetrieved); function tweetsRetrieved(tweets) { twitterSearchResults = tweets; } module.exports = function(app) { app.get('/', function (req, res){ res.render('index', twitterSearchResults); }); }; 我已经尝试了渲染和getTweets方法周围的setIntervals和控制台日志logging,我确实看到我的Twitter的最新鸣叫的响应,但模板没有更新。 任何帮助将不胜感激。 谢谢 汤姆

如何使用Express,Handlebars和Conslidate在Node.js中设置path

我有一个工作的Node.js网站,使用Express.js,Handlebars.js和Consolidate.js。 我想为我的模板的公共部分使用partials,但是不能解决如何使它们适用于不同URL的页面。 我的/views/目录包含这个: _footer.html _header.html article.html index.html 我的Node应用程序的相关部分如下所示: var express = require('express'), consolidate = require('consolidate'), handlebars = require('handlebars'), path = require('path'); var app = express(); app.engine('html', consolidate.handlebars); app.set('view engine', 'html'); app.set('views', path.join(__dirname, '/views')); var partials = {header: '_header', footer: '_footer'}; app.get('/', function(req, res) { res.render('index', {partials: partials}); }; app.get(/^\/([\w-]+)\/$/, function(req, res) { res.render('article', {partials: partials}); […]

更新handlebarJS预编译器

我正在使用句柄预编译器来编译使用该命令的句柄模板 handlebars *.tpl -f *.js 我正在使用handlebar.runtime-v1.1.2.js使用预编译的车把模板。 用以下代码执行编译后的模板 Handlebars.template('****'); 我得到一个错误 Uncaught Error: Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version (>= 1.0.0) or downgrade your runtime to an older version (<= 1.0.rc.2). 任何人都可以指导我更新手柄预编译器到最新的Linux机器上。

express3-handlebars和18next-node – 基于页面的国际化?

我的第一个问题 – 请容易。 我使用express,express3-handlebars和i18next-node与node.js 该计划是根据哪个视图(即哪个句柄文件)当前正在服务于不同的翻译命名空间。 因此,如果我们查看名为ie(.hbs)的页面,则i18next将在名为ie(.json)的相关语言中查找。 这使得翻译的组织和协调更容易。 这就是我目前的做法:首先,我将当前页面发送到handlebars模板进行渲染(即使这似乎是不必要的 – handlebars不会自动暴露它渲染的文件): res.render( url_base_path, { layout: ("sub"), title: title, currentpage: url_base_path } ); 然后我在当前页面的命名空间中访问要翻译的variables“greeting”,就像{{t "greeting" page=currentpage }} – 令人讨厌的是每个页面上有10个variables。 不要重复自己,有人吗? 't'是在express3-handlebars create()函数中定义的,如下所示helpers: { t: t } 翻译function看起来像这样 var t = function (i18next_key, options) { var page, result; page = options.hash.page; result = i18next.t(page + ":" + i18next_key); […]