代码blow不起作用,错误消息是:
未加载错误:尚未为上下文:"text!templates/bookTemplate.html_unnormalized2“加载模块名_。使用要求([])
define(['backbone', 'underscore', 'jquery'], function (Backbone, _, $) {
var bt = require('text!templates/bookTemplate.html');
var BookView = Backbone.View.extend({
initialize: function () {
this.render();
},
render: function () {
var template = _.template(bt, {
name: 'secret book'
});
this.$el.html(template);
}
});
return BookView;
});
然后我移动"text!templates/bookTemplate.html“来定义(),它可以工作!以下是工作代码:
define(['backbone', 'underscore', 'jquery',
'text!templates/bookTemplate.html'], function (Backbone, _, $, bt) {
// var bt = require('text!templates/bookTemplate.html');
var BookView = Backbone.View.extend({
initialize: function () {
this.render();
},
render: function () {
var template = _.template(bt, {
name: 'secret book'
});
console.info('template', template);
this.$el.html(template);
}
});
return BookView;
}); // it is working
据我的理解,在加载模块时,require()和define()是相同的。这是正确的吗?你能帮我解释一下为什么它在定义中工作,而在必需()中不起作用吗?
发布于 2014-05-07 14:38:53
您正在使用字符串文本调用require
。当您像这样调用require
时,它在伪同步方式中工作。它的作用类似于同步调用,因为它将立即返回模块。它是伪同步的,因为必须在调用伪同步形式的require
之前加载模块。
所以你可以这么做:
define(['backbone', 'underscore', 'jquery', 'text!templates/bookTemplate.html'],
function (Backbone, _, $) {
var bt = require('text!templates/bookTemplate.html');
而且它可以工作,因为模块将在require
执行之前加载。或者您可以使用您在第二个代码片段中显示的方法:
define(['backbone', 'underscore', 'jquery',
'text!templates/bookTemplate.html'], function (Backbone, _, $, bt) {
或者您可以使用CommonJS包装:
define(function(require, exports, module) {
var Backbone = require('backbone');
var _ = require('underscore');
var jquery = require('jquery');
var bt = require('text!templates/bookTemplate.html');
此包装工作正常,因为RequireJS将在运行时将其转换为:
define(["require", "exports", "module", "backbone", "underscore", "jquery",
"text!templates/bookTemplate.html"], function(require, exports, module) {
var Backbone = require('backbone');
var _ = require('underscore');
var jquery = require('jquery');
var bt = require('text!templates/bookTemplate.html');
在执行模块之前。
https://stackoverflow.com/questions/23523143
复制