2013-07-25 37 views
1

加载此库与RequireJS中的填充选项(也许,因为我在该库上的背景不佳)问题。我尝试查看文档并查看其他页面,但问题仍然存在。加载backbonejs和underscorejs requirejs时出现的问题

这是我的应用程序文件夹结构:

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> 

加载main.js

require.config({ 
    shim: { 
     underscore: { 
      exports: '_' 
     }, 
     backbone: { 
      deps: ['underscore', 'jquery'], 
      exports: 'Backbone' 
     }, 
    }, 
    paths: { 
     app:  'app', 
     mod:  'app/mods', 
     backbone: 'libs/backbone/backbone-1.0.0', 
     underscore: 'libs/underscore/underscore-1.5.1', 
     jquery:  'libs/jquery/jquery-1.10.2', 
    }, 
}); 

require([ 
    'app/app', 
], function (App) { 
    App.initialize(); 
}); 

定义的路径库和非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({
显示了错误:“遗漏的类型错误:无法读取属性“查看'未定义“,但我认为这是因为骨干从不加载。

¿谁能说出我在做什么错事?我整天看着代码和几页,我无法弄清楚答案。在此先感谢和长期质疑,买我见过很多人有这个相同的问题,也许答案可以帮助其他人。

+0

因此,要明确,就像它在这里writen代码工作完美(与更正,我对这个职位)。显然,所有问题都是某种缓存问题,而不是重新加载更新的库。处理很多工具时发生的事情:您可能认为问题出在某个地方,但它在另一个地方。谢谢! – JetSpyDragon

回答

0

不能发现任何错误,但你并不需要加载通路中的应用模块

paths: { 
    app: 'app', // remove 
+0

默认的baseUrl是js,所以app.js确实在app/app.js中,因为我使用'app/app'。事实上,app.js加载好了,我发布的所有源代码也加载,甚至jquery。但是,后退和下划线不会。 – JetSpyDragon

+0

没错,实际上你不需要应用程序路径... –

相关问题