Javascript 使用browserify在服务器和客户端之间共享把手模板

Javascript 使用browserify在服务器和客户端之间共享把手模板,javascript,node.js,handlebars.js,browserify,Javascript,Node.js,Handlebars.js,Browserify,目标:我不想为车把复制模板、部件和助手。我想在客户端和服务器上重复使用它们 问题:在客户端注册助手时,它不起作用 堆栈:Node.js与express、handlebar.js、browserify 正在使用的NPM模块:browserify车把、express车把 在我的客户端中,我有以下文件: var Handlebars = require('handlebars'); Handlebars.registerHelper('json', function(obj) { retur

目标:我不想为车把复制模板、部件和助手。我想在客户端和服务器上重复使用它们

问题:在客户端注册助手时,它不起作用

堆栈:Node.js与express、handlebar.js、browserify

正在使用的NPM模块:browserify车把、express车把

在我的客户端中,我有以下文件:

var Handlebars = require('handlebars');

Handlebars.registerHelper('json', function(obj) {
    return JSON.stringify(obj);
  });

var aTemplateFunction = require('../../templates/blah.handlebars');


var html = aTemplateFunction({
  someObject: {
    'key': 'value'
  }
});
我在上面运行browserify来编译模板

../../templates/blah.handlebar是:

它可以很好地编译模板,但不能正确地应用助手。我得到的错误是:

未捕获错误:缺少帮助程序:“json”

我做错了什么

附加问题:我发现了这个关于在客户机和服务器之间共享助手的示例,但对我来说这似乎更像是一种黑客行为


在客户端和服务器之间共享助手的正确方式是什么?

Cody Rushing的方法对我来说似乎是一个很好的解决方案。我唯一能想到的另一种方法——我不是建议这样做——是建立一个小型文件监视实用程序,从shared helpers.js文件复制内容,并将其嵌入服务器端模块和客户端脚本中的某个预定义点。老实说,我对他的文章有点困惑。因为他在用grunt预编译他的模板,我想是吧?我不知道他是怎么做到的,也不知道他是如何把它结合在一起的。@TroyGizzi我的实现在这里:但我得到的对象不是寄存器handlebar上的函数;在客户端,JavaScript中唯一需要的部分就是自调用函数,从函数{到};。这里有一个JSFIDLE,它可以工作,只使用它加上它下面的几行来实际呈现模板输出:关于它在服务器端的关系,请在Cody的文章中找到这条评论:在我们的客户机上使用的同一个文件-helpers.js文件将只包含自调用函数,而不包含其他内容;它将在客户端和服务器上作为外部脚本引用。
{{ json someObject }}