2013-07-25 36 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

沒錯,實際上你不需要應用程序路徑... –

相關問題