2013-09-23 43 views
0

加載javascript文件與RequireJS和Backbone時出現錯誤。使用Backbone widh requireJS加載JS時出錯requireJS

笨的config.php

$config['index_page'] = ''; 

home.php

<script data-main="<?php echo site_url('js/main.js')?>" src="<?php echo site_url('js/libs/require.js')?>"></script> 

main.js

require.config({ 
    baseUrl: "js", 
    paths: { 
     html5shiv: "libs/html5shiv", 
     jquery: "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min", 
     jqueryui: "http://code.jquery.com/ui/1.10.3/jquery-ui", 
     bootstrap: "libs/bootstrap.min", 
     tablesorter: "libs/jquery.tablesorter.min", 
     script: "script", 
     underscore: "libs/underscore.min", 
     backbone: "libs/backbone.min", 
     utils: "helpers/utils", 
     accountModel: "models/accountModel", 
     accountCollection: "collections/accountCollection", 
     accountRouter: "routers/accountRouter", 
     // Views 
     edit: "views/account/account_edit", 
     index: "views/account/account_index", 
     row: "views/account/account_row", 
     //Templates 
     'templates': 'templates' 
    }, 
    shim: { 
     jqueryui: { 
      deps: ["jquery"], 
      exports: "Jqueryui" 
     }, 
     tablesorter: { 
      deps: ["jquery"], 
      exports: "TableSorter" 
     }, 
     bootstrap: { 
      deps: ["jquery"] , 
      exports: "Bootstrap" 
     }, 
     script: { 
      deps: ["jquery", "tablesorter", "jqueryui"], 
      exports: "Script" 
     }, 
     underscore: { 
      exports: "_" 
     }, 
     backbone: { 
      deps: ["underscore", "jquery"], 
      exports: "Backbone" 
     } 
    } 

}); 

require(["backbone", "underscore", "accountCollection", "accountRouter","bootstrap", "script"], 
    function (Backbone, _, AccountCollection, AccountRouter) { 
     var accounts = new AccountCollection(); 
     var router = new AccountRouter({accounts: accounts}); 
     Backbone.history.start(); 
    }); 

這些文件沒有裝載有:

http://localhost/project/index.php/js/collections/accountCollection.js 
http://localhost/project/index.php/js/routers/accountRouter.js 
http://localhost/project/index.php/js/libs/underscore.min.js 
http://localhost/project/index.php/js/libs/bootstrap.min.js 
http://localhost/project/index.php/js/libs/jquery.tablesorter.min.js 

螢火蟲返回:404 Not Found http://localhost/project/index.php/js/collections/accountCollection.js

在我不使用主幹其他頁面,RequireJS工作得很好,並要加載的URL的JS是沒有的index.php

如果我改變main.js到:

require.config({ 
    baseUrl: "js", 
    paths: { 
     html5shiv: "http://localhost/project/js/libs/html5shiv", 
     jquery: "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min", 
     jqueryui: "http://code.jquery.com/ui/1.10.3/jquery-ui", 
     bootstrap: "http://localhost/project/js/libs/bootstrap.min", 
     tablesorter: "http://localhost/project/js/libs/jquery.tablesorter.min", 
     script: "http://localhost/project/js/scripts/script", 
     underscore: "http://localhost/project/js/libs/underscore.min", 
     backbone: "http://localhost/project/js/libs/backbone.min", 
     utils: "http://localhost/project/js/helpers/utils", 
     //Files Facebook Collector 
     accountModel: "http://localhost/project/js/models/accountModel", 
     accountCollection: "http://localhost/project/js/collections/accountCollection", 
     accountRouter: "http://localhost/project/js/routers/accountRouter", 
     // Views 
     edit: "http://localhost/project/js/views/account/account_edit", 
     index: "http://localhost/project/js/views/account/account_index", 
     row: "http://localhost/project/js/views/account/account_row", 
     //Templates 
     'templates': 'templates' 
    }, 
    shim: { 
     jqueryui: { 
      deps: ["jquery"], 
      exports: "Jqueryui" 
     }, 
     tablesorter: { 
      deps: ["jquery"], 
      exports: "TableSorter" 
     }, 
     bootstrap: { 
      deps: ["jquery"] , 
      exports: "Bootstrap" 
     }, 
     script: { 
      deps: ["jquery", "tablesorter", "jqueryui"], 
      exports: "Script" 
     }, 
     underscore: { 
      exports: "_" 
     }, 
     backbone: { 
      deps: ["underscore", "jquery"], 
      exports: "Backbone" 
     } 
    } 

}); 

只有不加載:http://localhost/project/index.php/js/text.js(用於加載模板)。

require(["backbone", "underscore", "accountCollection", "accountRouter","bootstrap", "script"], 
    function (Backbone, _, AccountCollection, AccountRouter) { 
     var accounts = new AccountCollection(); 
     var router = new AccountRouter({accounts: accounts}); 
     Backbone.history.start(); 
    }); 

謝謝。

+1

您有試過絕對路徑的baseUrl?如下所示:「/ project/js」 –

回答

0
baseUrl: "js", 

感謝喬納斯Geiregat