Articles of handlebars.js

比较句柄帮助器

我在代码中使用块助手来比较值的工作,但每次我运行这个代码的问题,我得到这个错误按摩在我的网页视图 Error: Missing helper: "compare" at Object.<anonymous> (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js:19:13) at Object.eval (eval at createFunctionContext (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js:254:23), <anonymous>:8:91) at main (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/runtime.js:175:32) at ret (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/runtime.js:178:12) at ret (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:525:21) at ExpressHandlebars._renderTemplate (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/express-handlebars/lib/express-handlebars.js:247:12) at ExpressHandlebars.<anonymous> (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/express-handlebars/lib/express-handlebars.js:173:21) 我的index.hbs文件 {{#compare pageCount ">" 1 }} <ul class="pagination"></ul> {{#compare currentPage ">" 1 }} <li><a href="/?page=1"> &laquo;</a></li> {{/compare}} {{/compare}} 我的auth.js文件 res.render('index', {x:"1888", "personList": personList,data: data, pageSize: […]

在Node JS / Express Web应用程序中生成PDF报告

我是一个新手,试图使用NodeJS / Express和Handlebars来构build一个Web应用程序来满足模板需求。 应用程序的一部分处理为销售生成发票。 我已经写了一个句柄模板以及一些JavaScript代码来处理添加/删除项目和计算总数等工作正常。 需要在包含添加在客户端的dynamic内容的NodeJS服务器上生成此发票的PDF格式。 我不确定如何着手实施。 我已经评估了客户端PDF生成选项,但这不是我的使用情况。 你可以让我知道,如果有可能在服务器端生成PDF,当客户端的HTML页面中有dynamic元素? 该应用程序类似于这个链接: http : //www.smarttutorials.net/invoice-system-using-jquery-autocomplete/ 代码的dynamic部分如下: //添加额外的表格行 var i=$('table tr').length; $(".addmore").on('click',function(){ html = '<tr>'; html += '<td><input class="case" type="checkbox"/></td>'; html += '<td><input type="text" data-type="productCode" name="itemNo[]" id="itemNo_'+i+'" class="form-control autocomplete_txt" autocomplete="off"></td>'; html += '<td><input type="text" data-type="productName" name="itemName[]" id="itemName_'+i+'" class="form-control autocomplete_txt" autocomplete="off"></td>'; html += '<td><input type="text" name="price[]" id="price_'+i+'" class="form-control changesNo" […]

指向部分生成器网站

我使用快速生成器生成快速网站,我需要引用视图文件夹内子文件夹内的部分hbs文件。 我的文件夹结构是这样的 从我的主布局文件(layout.hbs)我引用head和nav_bar文件,我得到一个错误,头文件不能find 错误是 C:\MovementForNewNigeria\app\views\index.hbs: The partial head could not be found Error: C:\MovementForNewNigeria\app\views\index.hbs: The partial head could not be found at Object.invokePartial (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\runtime.js:266:11) at Object.invokePartialWrapper [as invokePartial] (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\runtime.js:68:39) at Object.eval (eval at createFunctionContext (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\compiler\javascript-compiler.js:254:23), <anonymous>:6:28) at main (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\runtime.js:173:32) at ret (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\runtime.js:176:12) at ret (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\compiler\compiler.js:525:21) at C:\MovementForNewNigeria\app\node_modules\hbs\lib\hbs.js:87:17 at C:\MovementForNewNigeria\app\node_modules\hbs\lib\hbs.js:69:11 at done (C:\MovementForNewNigeria\app\node_modules\hbs\lib\async.js:74:20) at C:\MovementForNewNigeria\app\node_modules\hbs\lib\hbs.js:64:20

传递一个variables到每个响应在车把上

我正在使用nodeJS快车和句柄 有没有办法将相同的variables传递给每个快速路线? 我必须将isAuthenticatedvariables传递给每个前端才能呈现略有不同的视图。 我希望能够在快递中间件中传递一个variables,以便在每个页面中呈现它。 (如果有更好的方法,不一定要通过中间件) 有没有办法做到这一点?

NodeJS – 在渲染之前将数据库查询的结果发送到视图或路由

我正在使用Express JS,Socket IO和Handlebars与NodeJS做一个web应用程序,但我对这些技术很新颖。 我努力find一种方法来将查询结果传递给我的菜单(部分),主要是因为节点是asynchronous的,所以当我的查询返回结果时,页面已经呈现,通过。 main.handlebars(主版面): (…) {{> menu}} (…) {{{body}}} router.js var express = require('express'); var router = express.Router(); var index_controller = require('../controllers/index_Controller'); router.get('/', index_controller.index); module.exports = router; index_controller.js exports.index = function(req, res) { res.render('main_page_html'); }; 这个菜单会出现在每个页面上,我想在这个菜单中显示来自在线人员的名字,这是查询的结果。 我试图把路由function中的查询代码,它的工作原理,但我将不得不复制相同的代码到我有每一个路由,因为如我所说,这个菜单出现在所有的。 如果我尝试在路由function之外执行某个function,则asynchronous会启动,并且没有数据发送到该页面。 这绝对是一个更好的解决scheme。 ps:通过套接字发送我的数据到客户端是一种方式,但我想做的事情是服务器端。 -解- 我按照Tolsee的说法创build了一个中间件,所以现在我可以在需要的每个path中调用这个中间件。 这就是我所做的: menu.js exports.onlineUsers = function (req, res, next) { // database query […]

预编译为纯HTML的手把

有没有办法将Handlebars模板预编译为纯HTML? 把手预编译产生一个js文件。 我可以在节点上运行JS来生成一个HTML文件吗? 这就是我想要的: // Get a Handlebars instance var hb = require("handlebars"); // Load a template import fs = require('fs'); var template:string = fs.readFileSync('templates/template.handlebars','utf8'); // Compile said template var compiled = hb.precompile(template); // Write JS file fs.writeFileSync('compiled/template.js', compiled); var test = compiled.main(); // Write HTML file fs.writeFileSync('compiled/template.html', test); 这会失败,因为编译.main不是一个函数。 在那里有一个主要的function,我正在试图find。

Express +句柄上的Socket.io在https上不起作用

我正在尝试使用socket.io,但是当我在服务器上运行它时,使用https,我的socket.io不起作用。 我的app.js let express = require('express'); let path = require('path'); let favicon = require('serve-favicon'); let logger = require('morgan'); let cookieParser = require('cookie-parser'); let bodyParser = require('body-parser'); let index = require('./routes/index'); let users = require('./routes/users'); let dashboard = require('./routes/dashboard'); let app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'hbs'); // uncomment after […]

在expressjs句柄.hbs视图不加载我的部分

# app.js app.set('view engine', 'hbs'); # ./views/layout.hbs {{> nav}} # ./views/nav.hbs <a href="#">home</a> layout.hbs文件没有find我的部分nav.hbs 我在节点app.js控制台上得到以下错误: 抛出新的Handlebars.Exception(“部分”+名称+“不能是fo ^

比document.write()更好的实践来加载网站中的外国内容?

我有一个小部件(一些html代码)应该可以加载在不同的网站(这是不是我的控制下),但小部件托pipe在我的服务器上。 直到现在我有一个PHP脚本生产JavaScript代码看起来像这样: document.write('<div> … some more dynamic html …</div>'); 然后可以在任何带有标签的html页面上加载。 现在我正在计划重新devise,并希望与服务器端JavaScript做PHP部分。 我仍然需要输出document.write(),或者现在有一个更聪明的方式,因为我们有handlebarjs,node.js等。另外:我会感兴趣的是我喜欢meteor或德比这些新的奇特autoupdatefunction框架提供… (我想用meteor(meteor.com)做这项工作,但meteor输出完整的HTML页面,我不需要整个页面) 感谢您的帮助/build议

meteor模板中的简单数据reflection

我是meteor的新手,有一个很大的误解,就是模板如何处理数据reflection。 例如,我有这样的数据库中的一些数据: {name: {firstName: "foo", lastName: "bar"}, father: "buz"} 我能反映出来的方式对我来说真的很可怕。 我只能这样反映: JS: var Products = new Meteor.Collection("Products"); if (Meteor.isClient) { Template.DataTry.dataTryArr = function(){ return DataTry.find({father: "buz"}); }; } HTML: <head><title>…</title></head> <body>{{>DataTry}}</body> <template name="DataTry"> {{#each dataTryArr}} <p>Mr. {{father}} has a son {{name.firstName}}. They are both {{name.lastName}}</p> {{/each}} </template> 这是工作和反思。 但我不明白, {{#each}} dataTryArr {{#each}} ,为什么我需要dataTryArr ! 是不工作的W […]