【发布时间】:2012-02-28 14:31:21
【问题描述】:
我非常喜欢 emberjs,并希望在我的几个小型移动应用程序中迈出下一步,并预编译我的 Ember/Handlebars 模板作为我构建过程的一部分。
我宁愿远离 Ruby,并希望使用 node.js,因为我更喜欢使用它。
我相信我想要使用的是 Ember.Handlebars.precompile,但不幸的是我无法在节点环境中加载规范的 ember.js 文件。来自节点 repl 的天真尝试示例:
> var e = require('./ember');
ReferenceError: window is not defined
at /Users/jeremyosborne/git/projects/ldls/client/lib/emberjs/src/ember.js:5:1
at Object.<anonymous> (/Users/jeremyosborne/git/projects/ldls/client/lib/emberjs/src/ember.js:1596:2)
--- stack trace, you get the idea ---
我想我已经想出了如何在我的代码中设置它们以便它们与我的视图一起正常工作,我只想在浏览器 DOM 之外的环境中编译它们。
代替让规范的 ember.js 加载到节点中,是否有一组特定的文件可以从 ember 存储库中提取并用于编译我的模板?
编辑
我做了一个很有效的 kluge 修复,但在可维护性方面得到了 F。我抓住了所有Handlebars 代码减去对window 对象的引用。然后我使用Ember.Handlebars.Compiler 代码,将Ember.create 替换为Object.create,导出我的Ember 对象,并且中提琴的东西在节点中看起来很棒(因为它可以工作并且产生的函数是模板)。但是由于前面提到的维护失败,我不认为这是对我自己问题的回答,所以仍然可以回答。
编辑 2
上面的结果是完全失败的。可能程序有问题,但使用Ember.Handlebars.precompile 或Ember.Handlebars.compile 不起作用。模板制作完成,但是当我在代码中使用附加到 Ember.TEMPLATES 的预编译模板时,它们不起作用。正如 emberjs.com 网站上所建议的那样,我似乎只有在模板被明确传递到修改后的脚本标签时才能使它们工作。
编辑 3 我弄清楚我做错了什么。我的答案如下。
【问题讨论】:
标签: node.js ember.js handlebars.js