gpt4 book ai didi

backbone.js - 为什么 RequireJS 不加载这个依赖?

转载 作者:行者123 更新时间:2023-12-02 05:19:38 32 4
gpt4 key购买 nike

执行以下“主”模块时,出现“类型错误:OrdersPage 不是构造函数”

require(
[
'app/pages/orders/OrdersPage'
],
function(OrdersPage) {
'use strict';

new OrdersPage();
}
);

事实证明,当我在函数 (OrdersPage) 中时,“OrdersPage”未定义。所以问题是为什么它未定义 - 尽管将 OrdersPage 定义为依赖项?

这是 OrdersPage 的代码,它实际上被命中了,但是在打印出上述错误之后:

require(
[
'backbone'
],
function() {
'use strict';

console.log('In OrdersPage');

return Backbone.View.extend({

});
}
);

综上所述,控制台输出如下:

TypeError: OrdersPage is not a constructor
In OrdersPage

这告诉我 OrdersPage 模块是在加载并执行“主”模块之后加载的,为时已晚!

编辑 1可以使用一个非常简单的项目演示此问题 here .

编辑 2我已经在我的 RequireJS 配置中声明了 Backbone:

require.config({
// Initialize the application with the main application file
deps: ['main'],

paths: {
// jQuery
jquery: 'vendor/jquery-1.8.3',

// Underscore
underscore: 'vendor/underscore-1.4.3',

// Backbone
backbone: 'vendor/backbone-0.9.9',

// Templating
handlebars: 'vendor/handlebars-1.0.rc.1'
},

shim: {
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},

handlebars: {
exports: 'Handlebars'
},

underscore: {
exports: '_'
}
}
});

require(
[
'app/pages/orders/main'
],
function() {
'use strict';
}
);

最佳答案

您应该使用 define(),而不是 require()。它们非常相似,但是 require() 没有对返回值做任何事情,也没有设置模块。

define(['backbone'], function() {
'use strict';

console.log('In OrdersPage');

return Backbone.View.extend({

});
});

关于backbone.js - 为什么 RequireJS 不加载这个依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14092014/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com