簡體   English   中英

如何將RequireJS配置放在單獨的文件中並使r.js優化器工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM