2016-11-09 30 views
0

如何使用RequireJS訪問(命名)模塊?如何在RequireJS中訪問(命名)模塊?

比方說,這是我的模塊(俗語/ sayings-list.coffee):

define 'saySomething', [], -> 
    alert 'something' 

我的主文件(main.coffee)看起來是這樣的:

require ['sayings/sayings-list'], (sayings) -> 
    sayings.saySomething() 

現在我想發送一個變量來回!喜歡的東西:

require ['sayings/sayings-list'], (sayings) -> 
    sayings.saySomething(text) 

怎麼會變成這樣反映我的模塊中

謝謝。

回答

1

一般規則:你應該使用匿名define呼叫,而不是命名define電話,讓(即瞭解AMD規範r.js或其他優化)優化加名時,它優化你的模塊成束。這條規則很少有例外,但你在這裏展示的並不是一個例外。

如果你必須使用一個名爲模塊,你應該構建這樣的:

define 'saySomething', [], -> 
    saySomething: (text) -> alert text 

因此,它出口作爲saySomething訪問的功能。請注意,模塊名稱和導出函數的名稱可能不同。

然後,你必須使用它的名字載入它:

require ['saySomething'], (sayings) -> 
    sayings.saySomething(text) 

而且你必須設置你的配置,得到映射模塊包含它的文件名的路徑。這是必要的,因爲通過將名稱添加到define調用中,您已將文件名中的模塊名稱解耦。所以你必須告訴RequireJS如何找到模塊。

require.config 
    paths: 
    saySomething: "sayings/sayings-list" 
+0

謝謝!如果我沒有給模塊分配名稱,最後的配置部分是不需要的? – Timo

+0

沒錯。如果你沒有指定一個名稱作爲'define'的第一個參數,那麼這個特定的配置是不需要的,因爲那麼使用模塊路徑(減去'.js'擴展名)來創建模塊名稱(這將是'熟語/熟語-list')。所以當你使用它的時候,你會'需要['sayings/sayings-list'],(諺語) - >' – Louis

+0

好極了,最後我開始了! :D謝謝@Louis! – Timo