1
我嘗試使用早午餐和把手設置開發環境。 handlebars-brunch
包存儲在我的vendor.js
文件中包含的我的node_modules
和handlebars.runtime.js
中。我定義這個模板:早午餐 - Handlebars.templates是undefined
hello.template:
<p>Hello {{name}}</p>
而且這些行添加到我的config.coffee
:
templates:
defaultExtension: 'handlebars'
joinTo: 'app.js'
而作爲一個證明,它的作品,我可以看到在我的app.js
以下幾行:
;var __templateData = Handlebars.template(function Handlebars,depth0,helpers,partials,data) {
this.compilerInfo = [4,'>= 1.0.0'];
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression;
buffer += "<p>Hello ";
if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
buffer += escapeExpression(stack1)
+ "</p>\r\n\r\n";
return buffer;
});
if (typeof define === 'function' && define.amd) {
define([], function() {
return __templateData;
});
} else if (typeof module === 'object' && module && module.exports) {
module.exports = __templateData;
} else {
__templateData;
}
但是當我調用Handlebars.templates.hello
這樣的:
var tpl = Handlebars.templates.hello;
var html = tpl ({ name: "ok" });
console.log (tpl);
我得到這個錯誤:Cannot read property 'hello' of undefined
。所以Handlebars被定義,但不是模板。我的依賴包容似乎好得作爲我的主要功能是位於一切後,像這樣:
[...]
if (typeof define === 'function' && define.amd) {
define([], function() {
return __templateData;
});
} else if (typeof module === 'object' && module && module.exports) {
module.exports = __templateData;
} else {
__templateData;
}
;(function ($, document, window) {
var tpl = Handlebars.templates.hello;
var html = tpl ({ name: "ok" });
console.log (tpl);
} (jQuery, document, window));
任何想法/建議?
正如我窩在我的JavaScript的命名空間,我已經停用在config.coffee模塊('模塊:包裝:假定義:返回FALSE)。我是否被迫使用模塊來使用模板?像這樣:'var helloTemplate = require('hello'); html = helloTemplate({name:'ok'})'? – Simon
是的,像這樣。你需要模塊。在早午餐插件中不支持全局變量,但如果您確實需要它們,我們將爲拉取請求打開。 –
只要我有辦法做到這一點就好了:)謝謝! – Simon