2013-03-27 94 views
8

我看着在互聯網上的許多例子如何開始開發具有requireJS BB應用程序,但我是那種丟失。骨幹和RequireJS有效載荷

我認爲AMD有,只有當他們真正需要它加載文件的目標。不早。

爲什麼我看到的例子只有當開發商把幾乎所有的文件,作爲一個依賴於他/她的主要文件的開頭?

下面是一個例子: https://github.com/jcreamer898/RequireJS-Backbone-Starter/tree/master/js

此應用程序加載瞬間依賴於它加載路由器app.js它加載視圖的模板和模型main.js/home.js要求的意見/ view.js/model.js其中...並結束。

我看不出這個應用,例如與地方的意見的依賴關係(其模型,模板,集合,第三方的API等)負載只在路由器電話和初始化它們更多視圖擴展。其他方式,這將是毫無意義的使用AMD,當你初始化你的應用程序時加載所有文件。

類似的例子在這裏: http://backbonetutorials.com/organizing-backbone-using-modules/ 看到router.js file.Actually IT負載的意見/項目/列表「和「意見/用戶/列表」的依賴,而路由器不知道還該用戶是否需要他們未來與否。

請提前告知,在此先感謝!

回答

6

這是一個有點很難在這麼小的示例應用來看看,因爲你必須加載初始路徑上的東西和裝載骨幹東西通常意味着一個模型,收集和查看。既然你鏈接的樣本中只有一個樣本,那麼你就是在加載幾乎所有東西。

你從哪裏開始看「點播」功能是在其中添加其他路由/視圖/模型/等。但請記住,按需加載可能是AMD/RequireJS的次要目標。主要目標是modularity。然後他們給你很多選擇,可以根據需要加載東西,或者通過the optimizer

將所有東西捆綁在一起。此外,沒有什麼說你必須將所有require()放在文件的開頭。您可以稍後再做(例如啓動路線時)。這是您的第一個鏈接示例中的home.js的修改版本。如果您使用Chrome開發工具,則可以在「調試器」時查看網絡選項卡;語句暫停執行。然後繼續執行並查看其餘腳本如何加載。

define([ 
    'jquery', 
    'backbone', 
    'underscore' 
    ], 
function($, Backbone, _){ 
    var Router = Backbone.Router.extend({ 
     initialize: function(){ 
      Backbone.history.start(); 
     }, 
     routes: { 
      '': 'home' 
     }, 
     'home': function(){ 
      debugger; 
      require(['views/view'], function (mainView) { 
       mainView.render(); 
      }); 
     } 
    }); 

    return Router; 
}); 

查看this person's article瞭解更多背景以及您可能會在哪裏下一個。

+0

我已經添加了另一個示例,其中有更多的視圖,並且應用程序邏輯仍然缺少這個按需點。 – zsitro 2013-03-27 18:07:15

+0

謝謝!你的例子和文章幫了我很多。 – zsitro 2013-03-27 18:32:01

+0

完美。我爲每條路線加載了大量文件。現在,事情正在拉開!謝謝! – matthoiland 2014-01-04 00:41:42