Articles of handlebars.js

从MongoDB获取数据并显示在前端

我刚开始学习NodeJS作为我的应用程序的后端,但这是我第一次使用服务器端技术。 我试图build立一个简单的应用程序,这是一个我想插入数据到数据库(mongodb),并获得数据显示在前端的forms。 我正在使用快速句柄。 数据被成功保存到数据库,但是当我试图从数据库中获取数据显示在前端没有任何反应。 有谁知道我的代码可能是错的? 谢谢!! //代码从这里开始 var express = require('express'); var router = express.Router(); var mongoose = require('mongoose'); var assert = require('assert'); var url = 'mongodb://felipe:teste@ds033125.mlab.com:33125/form'; mongoose.connect(url); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index'); }); //将数据插入数据库(MONGODB) router.post('/insert', function(req, res, next) { var Schema = mongoose.Schema; var itemSchema = new Schema({ […]

Expressjs +句柄格式化date

我有这个对象 { title: 'A TITLE', description: 'Lorem Ipsum…', _id: 50806930bbf612a858000013, __v: 0, screenings: [ { venue: 'Venue1', dates: [Object] }, { venue: 'Venue2', dates: [Object] } ] } 从我的mongoDB出来。 dates是一个dates列表(DAH!)。 我的问题是现在我想让他们与服务器端的时间格式化。 这看起来应该是我应该使用胡子lambdas,但它似乎不可能使用我的堆栈( expressjs , 巩固 , 把手 …) 有人解决了这个? 这就是我现在要做的 Theatre.find({"screenings.dates":{$gte:lastSunday, $lte:nextSunday}}, function(err, entities){ res.render('index', { entities: entities, giveitatry: function(a) { return moment(a).format("MMM Do YY") […]

这个字符是什么“”,为什么会导致换行符?

我正在使用handlebars + hbs(在块/扩展帮助程序示例之后)为我的节点应用程序呈现html。 出于某种原因,我的一个div被推倒了1行。 我查看了Chrome浏览器的dom检查器,还有一行双引号: 这导致了这一点: 当我从dom检查器中删除双引号时(按退格或删除)布局是正确的: 废话是怎么回事? 这是一个非打印字符或东西? 在html /模板中没有任何东西,空格(或任何字符)不应该导致块级元素改变位置,对吧? 这是一些代码: Layout.html的相关部分 <div id="details" class="east">{{{block "east"}}}</div> 模板: <div id="details-title"> <h3 class="title elide" style="height:26px;">{{Title}}</h3> </div> <div id="details-body" class="content text"> <img class="card" src="{{ImagePath}}" /> <div> <span class="type">{{Type}}</span> </div> <div class="body"> {{{Body}}} </div> </div> 块+扩展助手:( 从hbs示例 ) hbs.registerHelper("extend", function (name, context) { var block = blocks[name]; if […]

设置一个句柄帮助器,以快速返回每个请求的特定值

我有一个基于快递的应用程序,服务器端提供的句柄模板的HTML和一捆骨干资源。 理论上,客户端,应用程序就像服务器端发生的事情。 这在开发中是很好的,但是当节点服务器同时处理很多请求的时候,我们正在使用的帮助器的机制被定义/重新定义了中断 – 我们设置了帮助器(在这种情况下,login/不是login,但可能是任何东西),然后服务其余的请求asynchronous发生 – 我们不知道,也不能控制这将需要多长时间。 我已经发现这是因为服务器上的Handlebar实际上是一个全局的 – 所以每次请求进来时,被调用的帮助程序都是从那里请求的一个共享对象。 问题是,如何能够设置每个asynchronous请求帮助器返回特定的值,并没有被并发请求污染…? 这里有一个testing用例的要点 – 希望能够说明问题: https://gist.github.com/dazld/023df6e1da7a92387720 (如果不明白我要做什么,只是在评论中,我会写更清楚的东西)。 谢谢!

手柄编译操作不允许

我试图在AppHarbor上进行Handlebars预编译工作。 我们遵循这里的说明,这适用于除AppHarbor之外的所有构build机器。 这里是错误日志: CompileHandlebarsTemplates: Compiling Handlebars template files Executing handlebars –output "templates.js" –min "D:\temp\iglbataj.o25\input\comp-prod-5d066abce08570e82575d1a1c877bd5c94d27b1c\WebApp\Templates" node "D:\temp\iglbataj.o25\input\comp-prod-5d066abce08570e82575d1a1c877bd5c94d27b1c\WebApp\Build\npm\node_modules\handlebars\bin\handlebars" –output "templates.js" –min "D:\temp\iglbataj.o25\input\comp-prod-5d066abce08570e82575d1a1c877bd5c94d27b1c\WebApp\Templates" fs.js:679 return binding.lstat(pathModule._makeLong(path)); ^ 5>EXEC : error : EPERM, operation not permitted 'D:\temp' [D:\temp\iglbataj.o25\input\comp-prod-5d066abce08570e82575d1a1c877bd5c94d27b1c\WebApp\WebApp.csproj] at Object.fs.lstatSync (fs.js:679:18) at Object.realpathSync (fs.js:1265:21) at tryFile (module.js:142:15) at Function.Module._findPath (module.js:181:18) at Function.Module._resolveFilename (module.js:336:25) at Function.Module._load (module.js:280:25) at Function.Module.runMain (module.js:497:10) […]

NodeJS给出在运行Handlebars时找不到模块“./parser”错误

我已经写了一个Handlebars模板,并成功地在浏览器中工作。 作为下一步,我想使用Handlebars预编译器 ,这是一个NodeJS模块。 我在本地下载了NodeJS的Handlebars和所有的依赖关系(no -g)。 但我似乎无法通过这一步: c:\node_modules> node > require("handlebars"); Error: Cannot find module './parser' … at Object.<anonymous> (C:\node_modules\handlebars\lib\handlebars\compiler\base.js:1:80) … 我打开base.js,第1行如下所示: var handlebars = require("./parser"); 但是在包含base.js的文件夹( 见github上的文件夹 )或任何父文件夹中没有parser.js。 Handlebars的NPM页面没有提到我可以find的对parser.js的依赖。 我不知道我错过了一个明显的步骤,或者如果我应该生成这个文件。 任何帮助或想法?

从meteor应用程序中删除车把包

我需要在我的meteor应用程序上使用angularjs作为我的客户端框架,所以我不会使用handlebars。 有没有办法删除包? 如果这是不可能的,可以handlejars与angularjs并排正确地工作?

我怎样才能让D3读取Handlebars上下文对象

我正在使用Node + Express.js。 我的一个路线呈现一个Handlebars模板及其上下文。 相关部分: my_data = JSON.parse(body); response.render( 'activity', my_data); 我的问题:在这个activity.hbs模板中,如何使用D3从my_data JSON对象创build一个绘图。 在activity.hbs的相关部分我已经尝试过了 <script type="text/javascript"> Handlebars.registerHelper('json', function(context) { return JSON.stringify(context); }); var datas = {{json my_data}} d3.select("body") .datum(datas) .enter() #do stuff with data </script> 看完这个问题后,我加了助手。 当我尝试渲染视图时,它会给出一个错误: Missing helper: 'json' at Object.<anonymous> 用正确的方式来帮助解决这个问题? 我怎样才能让D3读取我的上下文对象?

使用hbs和获取“path.join的参数必须是string”的错误?

我想使用hbs和express来将一些模板应用到JSON数据(最终将从一个url获取数据)。 作为一个使用快递4的新手,我发现很多以前的post和解决scheme真的很混乱,因为一些function在快递4中被折旧。我组合了一些代码片段,得到了这样的结果: var engines = require('consolidate'); var express = require('express'); var hbs = require('hbs'); app = express(); app.set('views', __dirname+ '/views'); app.set('view engine', 'hbs'); app.set("view options", { layout: true }); // ROUTES app.get('/', function (req, res){ var data = {"employees":[ {"firstName":"John", "lastName":"Doe"}, {"firstName":"Anna", "lastName":"Smith"}, {"firstName":"Peter", "lastName":"Jones"} ]} res.render('index', JSON.stringify(data)); }); app.listen(3000); 我也试过在res.render中放一个简单的string,比如 res.render('index', 'haha'); 但它仍然不起作用。 任何见解请.. […]

把手编译function与选项参数

我想在handlejars在NodeJS环境下编译时缩小我的模板。 我search了这个,发现了handlebars.compile(templateLoaded); 有更多的parameter passing给它,而不仅仅是编译器的模板。 我想知道如何通过function和其他选项,我可以通过minify选项。 这里是一个链接到允许这个句柄代码: https : //github.com/wycats/handlebars.js/blob/271106d43fae96fc1287898568d000b871f19084/lib/handlebars/compiler/javascript-compiler.js 注意第46和48行。