在Grunt的package.json中,我已经指定了一个把手编译器:
"grunt-contrib-handlebars": "0.7.0"
在Gruntfile中,我正在预编制把手模板:
handlebars:
compile:
options:
amd: true
namespace: false
files: [{
expand: true
cwd: 'src/mustache/',
src: ['**/*.mustache']
dest: 'public/js/compiled/templates'
ext: '.js'
}]
每个编译的模板都有一个需要把手的AMD包装器:
define(['handlebars'], function(Handlebars) {
return Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
...
在Bower的bower.json中,我指定了把手:
"handlebars": "1.3.0"
在我的RequireJS配置中,我指定了把手运行时:
require.config
baseUrl: '/js/compiled/'
paths:
'jquery': '../bower_components/jquery/jquery'
'underscore': '../bower_components/underscore/underscore'
'backbone': '../bower_components/backbone/backbone'
'handlebars': '../bower_components/handlebars/handlebars.runtime.amd'
...
(来源https://github.com/components/handlebars.js/blob/v1.3.0/handlebars.runtime.amd.js)
当编译的模板需要把手
时Handlebars = require 'handlebars'
把手未定义!我在这做错了什么!?我很感激任何帮助!
我宁愿不使用任何需要的插件。
答案 0 :(得分:1)
示例中编译的AMD模板不是Handlebars 1.3.0模板编译器输出的内容。这可能是使用早于1.3.0版本的grunt-contrib-handlebars来编译模板的问题。
此外,使用Handlebars AMD运行时不需要做任何特殊操作。例如,你的min。(对于Handlebars运行时AMD加载器)应该是这样的。不需要deps,垫片或出口。
requirejs.config({
...
paths: {
'handlebars.runtime': 'lib/handlebars.runtime.amd'
}
});
然后,如果要访问Handlebars对象(可能用于注册帮助程序),则需要从返回的对象访问默认属性。
var Handlebars = require('handlebars.runtime').default;
您可能还希望在https://github.com/ryan-blunden/handlebars-requrejs上查看我在GitHub上的回购,其中显示了Handlebars和RequireJS一起工作。
答案 1 :(得分:0)
将其声明为handlebars.runtime.amd.js
将需要查找handlebars.runtime.amd.js.js
,因此第一个问题可能与此有关。
使用Handlebars时需要我在使用runtime.amd
版本时遇到问题,而是发现使用handlebars.js
成功配置并声明jQuery dep:
require.config
baseUrl: '/js/compiled/'
paths:
'jquery': '../bower_components/jquery/jquery'
'underscore': '../bower_components/underscore/underscore'
'backbone': '../bower_components/backbone/backbone'
'handlebars': '../bower_components/handlebars/handlebars'
shim:
handlebars:
deps: ['jquery']
exports: 'Handlebars'