我尝试使用早午餐和把手设置开发环境。 handlebars-brunch
包存储在我的node_modules
文件中包含的handlebars.runtime.js
和vendor.js
中。我已经定义了这个模板:
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 ) );
有任何想法/建议吗?
答案 0 :(得分:1)
早午餐使用模块。它不会分配全局变量或其他东西。
require('name')
如果您的文件是app/name.js