Backbone.js 使用requirejs加载backbonejs和下划线JS时出现问题
我在用RequireJS中的shim选项加载这个库时遇到问题(可能是因为我在那个库上的背景不好)。我试图查看文档并查看其他页面,但问题仍然存在 这是我的应用程序文件夹结构:Backbone.js 使用requirejs加载backbonejs和下划线JS时出现问题,backbone.js,underscore.js,requirejs,Backbone.js,Underscore.js,Requirejs,我在用RequireJS中的shim选项加载这个库时遇到问题(可能是因为我在那个库上的背景不好)。我试图查看文档并查看其他页面,但问题仍然存在 这是我的应用程序文件夹结构: index.html js/main.js js/app/router.js js/app/app.js js/views/homeview.js js/libs/backbone/backbone-1.0.0.js js/libs/underscore/underscore-1.5.1.js js/libs/jquery/
index.html
js/main.js
js/app/router.js
js/app/app.js
js/views/homeview.js
js/libs/backbone/backbone-1.0.0.js
js/libs/underscore/underscore-1.5.1.js
js/libs/jquery/jquery-1.10.2.js
js/libs/require/require-2.1.8.js
所有文件都从index.html开始:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>App</title>
</head>
<body>
<div class="page">
Loading...
</div>
<script data-main="js/main" src="js/libs/require/require-2.1.8.js"></script>
</body>
</html>
定义库的路径以及非AMD库的垫片选项
然后是app.js
define([
'app/router',
], function(Router) {
var initialize = function() {
//var router = new Router();
//router.initialize();
Router.initialize();
};
return {
initialize: initialize,
};
});
然后是router.js:
define([
'jquery',
'underscore',
'backbone',
'app/views/homeview',
], function($, _, Backbone, HomeView) {
var AppRouter = Backbone.Router.extend({
routes: {
'': 'home',
}
});
var initialize = function() {
var appRouter = new AppRouter();
var homeView = new HomeView();
appRouter.on('route:home', function() {
userListView.render();
console.log('We have loaded the home page.');
});
Backbone.history.start();
};
return {
initialize: initialize,
};
});
现在我遇到了一个问题,因为查看chrome开发者工具中的网络选项卡时,只能加载jquery,不能加载主干或下划线
最后,由于它定义了对视图的引用,因此加载homeview.js
define([
'jquery',
'underscore',
'backbone',
'libs/text!app/tpl/home.html',
], function($, _, Backbone, HomeTpl) {
var homeView = Backbone.View.extend({
el: '.page',
render: function() {
//var self = this;
//users.fetch({
// success: function() {
var template = _.template(HomeTpl, {});
//self.$el.html(template);
this.$el.html(template);
// }
//});
},
});
return homeView;
});
问题是,因为在第var homeView=Backbone.View.extend行({显示错误:“uncaughttypeerror:cannotreadproperty'View'of undefined”),但我认为这是因为Backbone从未加载
var homeView = Backbone.View.extend({
有人能告诉我我做错了什么吗?我一整天都在看代码和几页纸,我想不出答案。提前谢谢你,并为这个长长的问题道歉,我看到很多人都有同样的问题,也许答案也能帮助其他人。找不到任何错误,但你不需要加载ap路径中的p模
paths: {
app: 'app', // remove
默认的baseUrl是js,所以app.js确实在app/app.js中,因为我使用了“app/app”。事实上,app.js可以加载,我发布的所有源代码也可以加载,甚至jquery。但是backcone和下划线不能加载。所以,要明确的是,这里编写的代码工作得非常好(经过我对帖子的更正)。显然,所有的问题都是缓存问题,而不是重新加载更新的库。处理许多工具时会发生的事情:你可能认为问题出在某个地方,但它出在另一个地方。谢谢!
paths: {
app: 'app', // remove