我想通過一個requireJS config.json
和一個像我的main.js
這樣的源文件,並接收其所有依賴項的列表。RequireJS是否提供了依賴API?
這可能是r.js
優化應用程序的一部分,但我找不到任何有關其內部結構的文檔。
RequireJS是否提供了這樣的api來生成依賴列表?
我想通過一個requireJS config.json
和一個像我的main.js
這樣的源文件,並接收其所有依賴項的列表。RequireJS是否提供了依賴API?
這可能是r.js
優化應用程序的一部分,但我找不到任何有關其內部結構的文檔。
RequireJS是否提供了這樣的api來生成依賴列表?
我沒有知道的API。但是,如果你運行r.js
(優化)用這樣的建築結構:
({
baseUrl: ...,
dir: ...,
mainConfigFile: ".../config.js",
findNestedDependencies: true,
name: "main",
optimize: "none"
})
,那麼你會得到一個build.txt
文件在指定存儲優化的建立(的dir
值)的目錄。該文件的一般格式爲:
<output-file1>
----------------
<module A>
<module B>
<output-file2>
----------------
<module C>
<module D>
這告訴你的是,輸出文件output-file1
包含模塊A
和B
,output-file2
包含模塊C
和D
。
通過上面我建議的配置,您應該只有一個輸出文件在您的主模塊build.txt
文件中列出,其下列出的模塊列表是它所依賴的所有模塊。
在上面的配置中,我設置了optimize: "none"
,因爲如果您唯一關心的是依賴關係,它會節省時間。在真實的構建中,你想讓r.js
使用uglifyjs來縮小你的代碼。另外,findNestedDependencies: true
可以告訴r.js
在代碼中間找到對require
的動態調用。並且Thins帶來了重大警告。如果你有這樣的:
if (blah)
require(["foo"], function (foo) {...});
然後findNestedDependencies: true
將能夠檢測到存在的模塊foo
的依賴關係。但是,有沒有辦法讓r.js
來處理這個問題:
var module_name = obj[key];
require([module_name], function (module) {...});
知道這個代碼加載什麼模塊,r.js
將不得不執行代碼(即使在當時有什麼執行代碼可以發現一個限制)。