早午餐 - Handlebars.templates未定义

时间:2013-10-25 10:20:56

标签: handlebars.js brunch

我尝试使用早午餐和把手设置开发环境。 handlebars-brunch包存储在我的node_modules文件中包含的handlebars.runtime.jsvendor.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 ) );

有任何想法/建议吗?

1 个答案:

答案 0 :(得分:1)

早午餐使用模块。它不会分配全局变量或其他东西。

require('name')

如果您的文件是app/name.js