[英]How Can I Place RequireJS Config in Separate File and Make the r.js Optimizer Work?
RequireJS設置的大多數示例,將配置對象放在main.js入口點,如下所示:
//main.js
require.config({
"paths": {
//libs
"lib1": "assets/js/lib/lib1",
"lib2": "assets/js/lib/lib2",
"lib3": "assets/js/lib/lib3",
"lib4": "assets/js/lib/lib4"
}
});
//start the app
define(["lib1"], function(lib1){/*start the app*/});
我更喜歡將配置對象放在一個單獨的文件中,因為隨着它的增長,很難在同一個文件中維護。
當我在瀏覽器中運行它時,以下設置有效,但由於某種原因,我在運行r.js優化器時遇到錯誤:
//config.js
define({/*all configuration here*/});
//main.js
define(["config", "require"], function(config, require){
requirejs.config(config); //set configuration
require(["app"]); //launch app, where "app" path is defined in config.js
});
當我運行r.js時,我收到以下錯誤:
*跟蹤:main的依賴關系
錯誤:ENOENT,沒有這樣的文件或目錄'C:\\ Work \\ project \\ target \\ app.js *
所以似乎r.js沒有得到配置設置,因為它正在尋找app.js作為相對腳本,而不是具有已定義路徑的模塊。
這是我的build.js文件(appDir,dir和mainConfigFile是相對於build.js文件):
({
appDir: "../src",
baseUrl: ".",
dir: "../target",
mainConfigFile: "../src/main.js",
findNestedDependencies: true,
modules: [
{
name: "main"
}
]
})
這就是我這樣做的方式。 我喜歡將配置文件分開,因為我在測試中重復使用它。
文件夾結構:
PROJECT
|
+- build (build output directory)
|
+- build-scripts (contains r.js, build.js)
|
+- WebContent
|
+- index.html (application main file)
|
+- scripts
|
+- require-cfg.js
|
+- main.js
|
+- ...
配置文件( require-cfg.js
- 僅顯示相關內容):
var require = {
baseUrl: "scripts",
paths: ...
...
};
構建文件( build.js
):
({
appDir: "../WebContent/",
baseUrl: "scripts/",
mainConfigFile: "../WebContent/scripts/require-cfg.js",
paths: {
/* repeated from require-cfg.js */
},
dir: "../build",
optimize: "uglify2",
inlineText: true,
removeCombined: true,
name: "main"
})
引導代碼( index.html
):
<script src="scripts/require-cfg.js"></script>
<script src="scripts/lib/require-2.0.2-jquery-1.10.2.js"></script>
<script src="scripts/main.js"></script>
我在build-scripts
文件夾中使用build.js
配置執行r.js
優化和組合輸出轉到build
文件夾。 您可以根據自己的需要調整路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.