2012-11-06 53 views
1

在bootstrap.js.coffee,還有一些代碼:一些代碼混淆我在這塊寶石----骨幹,引導護欄

define [], -> 
    App = 
    Models: {} 
    Collections: {} 
    Routers: {} 
    Helpers: {} 
    Views: { 
     Posts: {} 
     Common: {} 
     Sessions: {} 
     Tokens: {} 
     Passwords: {} 
     Confirmations: {} 
    } 

我不明白爲什麼「定義」的方法是js代碼? 等等,在其他代碼中,這個「define」方法無處不在!

資產/ Java腳本/模型/ post.js.coffee

define ['backbone', 'bootstrap'], (Backbone, App) -> 
    class App.Models.Post extends Backbone.Model 
    paramRoot: 'post' 
    urlRoot: '/posts' 

    defaults: 
     title: null 
     content: null 

我想知道的方法---「定義」,有什麼方法做呢,爲什麼我不能尋找到方法細節寫??

謝謝!

回答

0

我不是JavaScript的人,但我相信這是RequireJS的一部分。

根據the docs,這似乎是定義函數具有依賴性:

如果模塊具有依存關係時,第一參數應該是依賴名稱的數組 ,並且所述第二參數應該是一個定義 功能。一旦所有的 依賴已經加載,該函數將被調用來定義模塊。該函數應該返回一個 定義模塊的對象。的依賴關係將被傳遞到的定義 函數作爲函數參數,以相同的順序列出作爲依賴數組中的順序 :

//my/shirt.js now has some dependencies, a cart and inventory 
//module in the same directory as shirt.js 
define(["./cart", "./inventory"], function(cart, inventory) { 
     //return an object to define the "my/shirt" module. 
     return { 
      color: "blue", 
      size: "large", 
      addToCart: function() { 
       inventory.decrement(this); 
       cart.add(this); 
      } 
     } 
    } 
); 

在該示例中,創建了一個我/襯衫模塊。這取決於我/購物車 和我的/庫存。在磁盤上,文件的結構是這樣的:

  • 我/ cart.js
  • 我/ inventory.js
  • 我/ shirt.js

上面的函數調用指定兩個參數,「購物車」和 「庫存」。這些是由「./cart」和 「./inventory」模塊名稱表示的模塊。

直到加載了我的購物車和我的/庫存模塊 並且該功能將該模塊作爲「購物車」 和「庫存」參數接收到後才能調用該功能。

明確禁止定義全局變量的模塊,因此一次可以在一個頁面中存在多個版本的模塊(請參閱 高級用法)。而且,函數參數的順序應該與 相匹配。

函數調用的返回對象定義了「my/shirt」 模塊。通過以這種方式定義模塊,「my/shirt」不存在作爲全局對象的 。

+0

非常感謝你!這是requirejs(終身學習啊) – railsbug