2013-03-27 78 views
8

我正在使用RequireJS來管理我在開發中的依賴關係,但是在生產中我想刪除AMD加載器的所有依賴關係。它看起來像RequireJS優化器創建一個仍然在運行時使用AMD負載的文件 - 我只是想要有一個靜態(非AMD依賴,但仍然AMD兼容)文件,如jQuery產生(從看jQuery源代碼,看起來他們手動將他們的依賴關係排列在他們的grunt文件中)。這可能嗎?編譯RequireJS以消除AMD依賴

我打算使用RequireJS以外的其他庫。

注意:這與我的其他問題Javascript requirejs in development but compiled in production類似,但在這種情況下,我想一起刪除AMD。

+1

如何使用較小的AMD加載程序,如杏仁? - https://github.com/jrburke/almond – 2013-03-27 14:28:15

+0

@SimonSmith我打算從編譯版本中一起刪除AMD。當編譯爲單個文件時,爲什麼我需要使用AMD? – 2013-03-27 15:14:27

+0

我也很好奇這件事,因爲我不希望AMD成爲必要的(剛好) - 你最終解決了這個問題嗎? – 2013-07-26 17:14:06

回答

3

如果您希望通過<script>標記或AMD來加載腳本,那麼您可能需要使用基於how my EventEmitter class exposes its self的內容。

// Expose the class either via AMD, CommonJS or the global object 
if (typeof define === 'function' && define.amd) { 
    define(function() { 
     return EventEmitter; 
    }); 
} 
else if (typeof module !== 'undefined' && module.exports){ 
    module.exports = EventEmitter; 
} 
else { 
    this.EventEmitter = EventEmitter; 
} 

這暴露經由AMD,CommonJS的(節點)和所述全局對象(即window)的對象。這有一個主要的注意事項,它只適用於單個文件腳本,只想通過AMD公開他們的類。

如果您有很多模塊,那麼您可能需要首先編譯腳本r.js,使用Almond填充AMD,然後使用類似上面的內容以上述多種方式公開它。

-1

我和你有同樣的問題。

最後我解決了它,我創建了一個基本的requireJS項目結構和一個執行自動化的Gruntfile。

  1. 過程中少
  2. 優化requireJS。
  3. 刪除AMD
  4. 將HTML中的腳本標記從require語法替換爲腳本標記sintax。

我希望這可以幫助你。

https://github.com/sheldorn/require-base-structure