是Yeoman的新手,我使用generator-backbone
生成了一个Backbone应用程序这是我的main.js(需要js配置)
/*global require*/
'use strict';
require.config({
shim: {,
handlebars: {
exports: 'Handlebars'
}
},
paths: {
jquery: '../bower_components/jquery/dist/jquery',
backbone: '../bower_components/backbone/backbone',
underscore: '../bower_components/lodash/dist/lodash',
handlebars: '../bower_components/handlebars/handlebars'
}
});
require([
'backbone'
], function (Backbone) {
Backbone.history.start();
});
现在我使用 yo backbone创建了一个视图:查看登录
这是生成的视图
define([
'jquery',
'underscore',
'backbone',
'templates'
], function ($, _, Backbone, JST) {
'use strict';
var LoginViewView = Backbone.View.extend({
template: JST['app/scripts/templates/LoginView.hbs'],
tagName: 'div',
id: '',
className: '',
events: {},
initialize: function () {
this.listenTo(this.model, 'change', this.render);
},
render: function () {
this.$el.html(this.template(this.model.toJSON()));
}
});
return LoginView;
});
当我使用LoginView运行应用程序时,出现错误
Error: Script error for: templates http://requirejs.org/docs/errors.html#scripterror
显然我看到模板没有在main.js中定义的位置。运行yeoman发电机时我错过了什么
答案 0 :(得分:1)
如果你犯了同样的错误,比如m,那就验证一下
生成代码后,如果其显示模板未定义或您发现缺少template.js,请检查以下步骤
--force
)template.js
文件。 但是这里的问题是,它不会开箱即用,template.js写在app/.tmp/scripts/template.js
位置。
您可以相应地修改main require配置文件,或者打开GruntFile.js
并修改此功能
grunt.registerTask('createDefaultTemplate', function () {
grunt.file.write('/your/custom/path/to/templates.js', 'this.JST = this.JST || {};');
});
同时验证你是否在GruntFile.js中有这一行
grunt.loadNpmTasks('grunt-contrib-handlebars');
如果没有,请在最后添加(当然不是在功能块之后)