2013-04-02 45 views
3

假設我有啓動類似下面的模塊:有包括RequireJS依賴更簡潔的方式

define(['jquery', 'actions', 'util', 'text!../templates/dialog.html!strip', 'text!../templates/requestRow.html!strip', 'text!../templates/respondForm.html!strip'], function($, actions, util, tDialog, tRequestRow, tRespondForm) { 

該模塊包含的大部分代碼編寫到我的客戶端UI。它還使用text.js插件加載了我編寫的其他幾個模塊以及3個HTML模板。我想知道是否有一個更簡潔的方法來做到這一點?隨着應用程序的增長,我可能會有更多的模板加載或模塊,看起來像我的定義語句可能會變得有點醜陋。我是不是應該加上我的模板路徑require.config在我main.js這樣的:

require.config({ 
baseUrl: '/webrequests/resources/scripts/', 
paths: { 
    'modernizr': '../js/vendor/modernizr-2.6.2-respond-1.1.0.min', 
    'bootstrap' : '../js/vendor/bootstrap.min', 
    'dialog' : 'text!../templates/dialog.html!strip', 
    'requestRow' : 'test!../templates/requestRow.html!strip', 
    'respondForm' : 'text!../templates/respondForm.html!strip' 
}}); 

有可能是某種方式來加載一個目錄中的所有模板,只是有1依賴性的定義語句包括哪些內容?

在此先感謝。

回答

4

您可以在您經常使用的模板中加載一個模塊。因此,組一個模塊中要加載的模板,這樣你可以加載此模板模塊,而不是一個獨立的模板:

// generalTemplates.js 
define([ 
    'text!../templates/dialog.html!strip', 
    'text!../templates/requestRow.html!strip', 
    'text!../templates/respondForm.html!strip' 
], function (tDialog, tRequestRow, tRespondForm) { 
    return { 
     dialog: tDialog, 
     requestRow: tRequestRow, 
     respondForm: tRespondForm 
    }; 
}); 

使您的模塊中,你可以簡單地包括像任何其他模板模塊:

define([ 
    'jquery', 
    'actions', 
    'util', 
    'generalTemplates' 
], function($, actions, util, templates) { 
    var tDialog = templates.dialog, 
     tRequestRow = templates.requestRow, 
     tRespondForm = templates.respondForm; 

    /* You can do stuff with the templates here */ 
}); 
+0

哇,我從來沒有想過這樣做的。這很有道理!對RequireJS來說還是一個新東西。謝謝! –