Articles of hogan.js

复杂的迭代逻辑在霍根js?

我试图学习expressjs,我有一个控制器查询数据库,并返回一个JSON对象,看起来像这样: [ { _id: 58cb851721c1c107ab436686, title: 'some title', content: 'this is content' }, { _id: 58cb856321c1c107ab436688, title: 'ah yes', content: 'more title and contents' } … … ] 我现在想要做的是显示数组中的每个元素在MDL卡布局。 所以,如果上面的json对象有20个对象,则应该有20张卡片,每个卡片显示它们各自的_id , title和content属性的值。 要做到这一点,我将不得不像这样使用for循环: for(var i = 0; i < data.length; i++) { <span> {{ data[i]._id }} </span> </br> <span> {{ data[i].title }} </span> </br> <span> […]

AJAX调用nodeJS和expression成功,但不显示数据

我最近已经从一个codeigniter框架迁移到一个具有明确框架的nodejs。 我们的codeigniter网站有很多JS,因为它是一个单一的页面应用程序,我们做了很多的AJAX调用。 我们现在正在搞乱节点和expression,而且我无法获得一个简单的AJAX调用来运行。 这可能是对节点缺乏了解,也可能是别的。 我们正在使用openshift来主持。 我们使用hogan-express作为模板。 server.js var express = require('express'); var fs = require('fs'); var http = require('http'); var path = require('path'); var SampleApp = function() { var self = this; self.initializeServer = function() { self.app = module.exports = express(); self.app.configure(function() { self.app.set('views', __dirname + '/views'); self.app.set('view engine', 'html'); self.app.engine('html', require('hogan-express')); //self.app.set('layout', 'layout') # […]

要求在胡须模板上的节点和浏览器一样

这个问题使用霍根作为例子,但适用于任何模板。 我试图做一些同构(在客户端和服务器上工作)。 在客户端,如果我需要在胡须文件中: var tpl = require('./something.ms'); 然后,browserify +转换检测到这是一个扩展名的胡子文件, tpl是一个对象,其中一个函数是.render 。 我想要完全一样的结果,如果我是用NodeJS运行上述行。 默认情况下,节点只是期望这个文件是一个JavaScript文件,所以结果看起来像这样和错误: (function (exports, require, module, __filename, __dirname) { <h1>some html</h1> …

如何在hogan-express模板引擎中传递数组

如何使用hogan-express将下面的数组传递给HTML页面? 我正在尝试,但似乎并没有工作。 我的代码: apiRouter.get('/myPosts', function(req, res, next){ userModel.findOne({'profileID':req.session.facebookProfileId}, function(err, userPosts) { if(userPosts) { res.render('myPosts', {title:siteName + ': My Posts', posts:userPosts.posts}); } else { console.log('You do not have any posts'); } }) }) 顺便说一下, userPosts.posts如下所示: ["123","124","125"] myPosts.html页面如下: <!doctype html> <head> <meta charset="UTF-8"> <title>{{title}}</title> </head> <body> <p><a href="/posts?id={{posts[0].value}}">Post 1</a></p> <p><a href="/posts?id={{posts[1].value}}">Post 2</a></p> </body> </html> 顺便说一下,{{title}}位正在通过。

为什么我在Mustache中获取模板文件名而不是模板内容

我经历了胡须教程 这个问题与embedded胡须模板到另一个模板有一点相关 除了偏分之外,我还有其他所有的工作 我试图做 base.mustache: {{testVar}} <h2>Names</h2> {{#names}} {{> user}} {{/names}} user.mustache: <strong>{{name}}</strong> 但不是呈现用户模板或它的内容,即名称的价值,它呈现Names c:\blahFolder\user.mustache 我使用hogan-template-compiler来预编译我的模板。 你能弄清楚为什么从上面的信息发生,或者你需要更多的信息? 我假设,我的编译器代码是好的,因为我得到正确呈现testVar值。 如果你真的需要看,这是我的hoganCompiler.js var partialsDir = __dirname + '/views/partials' , jsDir = __dirname + '/public/js/compiled'; var hogan = require('hogan.js') , path = require('path') , join = path.join , fs = require('fs') , onModify , relations = {} , watch; […]

如何将预编译的hogan.js模板封装到AMD模块中?

我试图将预编译我的胡须模板join到我的构build过程中。 我使用AMD代码组织,所以我想将我编译的function包装到模块中。 我正在尝试执行以下操作: var fs = require('fs'); fs.readFile('template.html', 'utf-8', function(err, data){ function wrap(fnString){ var pre = 'define(function(){return '; var post = '});'; return pre + fnString + post; } var hogan = require('hogan.js'); var compiledFn = hogan.compile(data, {asString: true}); fs.writeFile('template.js', wrap(compiledFn), function(){console.log('written template module')}); }); 当我尝试在应用程序中使用导出的函数时,我得到一个错误: Uncaught TypeError: Object [object global] has no method 'b' […]

Node.js,express.js&hogan.js:部分在第二次刷新后无法正确加载

我有一个快速的3应用程序运行良好,但有什么问题,当我第二次刷新网站。 var x = {footer:"footer", header:"header"} exports.index = function(req, res){ res.render("index.html", {jow: "ieps", partials:x}) } 当我第一次去我的网站时,一切都很好,所有的部分渲染很好。 但是,当刷新我有这个错误: Error: ENOENT, open '/Users/kevinvanhove/Documents/work/projects/basing/business/klanten/javascript/nodeJS/express/basing/views/<h2>wow</h2>.html' 但是,当删除xvariables并直接将对象文字添加到res.render参数列表中时,再次正常工作。 exports.index = function(req, res){ res.render("index.html", {jow: "ieps", partials:{footer:"footer", header:"header"}}) } 更新:index.html视图 {{> header}} <h1>jow en {{jow}}</h1> {{> footer}} 查看这个藤蔓快速浏览: https://vine.co/v/M7BYi75pdrh 有些见解将不胜感激,谢谢。

节点js redis遍历每个散列键值

我对redis&node非常陌生,现在我试图通过一些我已经创build并打印出来的testing哈希键进行循环来筛选结果。 这是我期望看到的结果: { "aaData": [['Tim Osbourne'],['Joe Bloggs'],['John Doe'],['Perry Coke'],['Will Holmes'],['Steven Smith']} 但是我得到这个结果: { "aaData": [[],[],[],[],[],[],]}'Tim Osbourne','Joe Bloggs','John Doe','Perry Coke','Will Holmes','Steven Smith', 这是我的代码: app = require('../ app'); var redis = require(“redis”), client = redis.createClient(); routes = require('./'); var key_types =''; client.keys(“*”,函数(err,all_keys){ key_types + ='{“aaData”:['; all_keys.forEach(function(key,pos){//使用forEach的第二个参数来获取pos key_types + =“[”; client.hmget([key,'空间的所有者]],函数(err,field_val){ key_types = key_types +“'”+ field_val +“',”; }); […]

Hogan.js部分在预编译模板

是否有可能在编译模板中有部分? 这似乎是可能的,因为部分名称是在编译对象中引用的,但我不知道如何使其工作。 我在服务器端(node.js)预编译Hogan.js模板并在客户端使它们可用。 这是模板的一个片段: <ul class="log-{{id}}"> {{#entries}} {{> entry}} {{/entries}} </ul> 一旦这个模板被编译了,我就会看到一个关键字为<entry0的对象中的partials属性 我能够使用以下代码在客户端渲染模板: var data = {id: 11, entries: [{ id: 1, name: 'Entry 1'}, {id: 2, name: 'Entry 2'}]}; template = new Hogan.Template(compiledTemplate); template.render(data); 模板呈现得很好,但{{#entries}} {{/entries}}块内没有任何{{#entries}} {{/entries}} 。 部分本身也是预编译的,可在客户端使用。 我试图通过几种不同的方式来传递,包括: template.render(data, {partials: { entry: compiledEntryTemplate }}); 所有的迹象似乎都应该是可能的,但我无法弄清楚或find任何指出如何去做的文档。 我正在使用Hogan.js 3.0.1

Hogan,子目录中的参考文件

使用partials或模板inheritance,真的不可能从子目录引用.mustache文件? 换句话说,像一个目录结构 |- views ||- templates |||- base.mustache ||- somePage.mustache somePage.mustache是沿线的东西 {{< templates/base }} {{$content}} … {{/content}} {{/ template/super }} 要么 {{> templates/base}} … 如果基础胡须文件不在子目录中,但两者都可以使用,但不适用于"templates/"添加。 这是真的不可能使用Hogan.js或我错过了什么…因为我已经尝试了所有我能想到的逻辑变化…而官方规范并没有真正解决这是如何工作清楚。