2011-03-18 45 views
2

我們剛剛開始在我們的項目中使用requirejs,我們正在熱愛它 它。目前我們只是用它來管理我們的許多jQuery插件,網站運行在 之上,所以幾乎沒有抓住它潛在的表面......但是由於時間的限制,這需要等待。在requirejs中使用優化器來分組和加載文件

我遇到了一些問題,讓我玩的優化器, 我不知道你是否可以告訴我,如果它甚至可以做到這一點。 我的目錄結構:

> /common/ 
> /common/*.js - common plugins used on most pages on the site 
> /infrequent/ 
> /infrequent/infrequentModule.js 
> /infrequent/ckeditor 
> /infrequent/ckeditor/1000s.js 
> /require.js 
> /jquery.js 
> /main.js - this file contains all scripts in common. It looks at the page and call the necessary plugins. 

優化/建希望:

  • main.js會包含所有常見的腳本。在大多數頁面上,這個腳本將是唯一加載的(除了require.js)
  • main.js查看頁面,如果它看到它需要一個不頻繁的插件/模塊,它會加載異步。所以在一個不經常的頁面上,我可能會加載require.js,main.js和infrequentModule.js。

我已經嘗試過在生成腳本中排除的各種方法,並且 包含文件以獲得所需的結果,但無濟於事。 有沒有人有任何想法或知道這是否事實上甚至可能?

回答

3

好了,我得到了require.js在谷歌組一些偉大的答案 - http://groups.google.com/group/requirejs/browse_thread/thread/359b02473f4e707

以下是我得到的,我希望可以幫助了別人一個有用的答案...

嗨,我目前在做這在我的項目之一,這裏是我的 build.js:

paths: { 
       //load libs from cdn 
       "jqueryUI": "jqueryUI", //temp static file for build 
       "swfobject": "swfobject", //temp static file for build 
       "Templates": "../Templates/Settings" 
     }, 
modules: [{ 
      name: "appName", 
         excludeShallow: ["jqueryUI", "swfobject", "Modules/ 
module.preferences"] 
     } 
在我的模塊之一

然後,我有一個需要打電話,而我執行WH模塊/ module.preferences EN我需要它:

function loadPreferences(){ 
require(["Modules/module.preferences"],function(){ 
        //Execute some init code after the module has 
loaded 
     }) 
} 
} 

這實現你所描述的,我已經要求並在頁面加載主加載 ,然後module.preferences負荷異步當我需要它。傑夫,希望有所幫助。

相關問題