簡體   English   中英

如果我使用r.js優化RequireJS項目,是否需要更改路徑和依賴項配置?

[英]If I optimize my RequireJS project using r.js, do I have to change the path and dependency configuration?

我是RequireJS的新手。 我大部分時間都了解。 但是, r.js優化過程使我感到困惑。 兩個問題:

  1. 將所有源合並到單個文件中是否不會破壞RequireJS的延遲加載功能的目的?

  2. 如果我確實使用r.js進行了優化並且將所有內容都保存在一個文件中,那么我是否必須手動更新配置中的路徑信息以指向該單個文件? 現在我是否必須在整個應用程序中更改我定義為單個模塊的依賴關系,以指向此單個文件? 這只是一個偽裝資料,用以說明我當前的設置方式:


requirejs.config({
    paths : {
        mod1 : 'app/common/module1',
        mod2 : 'app/common/module2',
        mod3 : 'app/common/module3',
    },
});

-- MOD 1
define(["mod2", "mod3"], function(mod2, mod3) {
// do something
}

現在是否必須在優化后手動更新才能看起來像這樣?

requirejs.config({
    paths : {
        optimizedMod : 'build-dir/optimizedModule',
    },
});

-- MOD 1
define(["optimizedMod"], function(optimizedMod) {
// do something
}

回覆。 1.不,不是。 r.js分析您的依賴關系樹,並且(默認情況下)僅包含您無論如何在應用程序啟動時都需要加載的模塊。 動態require d的依賴項將不包括在內,它們將在運行時延遲加載(除非您將findNestedDependencies設置為true )。

但是,可以說延遲加載不是使用RequireJS的主要好處,更大的事情是模塊化本身。 被迫管理依賴項使得編寫不可測試或不可重構的代碼變得更加困難-可以立即發現不良體系結構(冗長的依賴項列表,“神”模塊等)。

回覆。 2.這正是為什么您不應該命名自己的模塊或在paths配置元素中映射它們的原因。 paths應該用於第三方庫,而不是您自己的代碼,集中化名稱->路徑映射會降低靈活性。 一旦你通過他們的路徑是指依賴(相對baseUrl )r.js可以在編譯的時候重寫它們:

define(["app/common/module2", "app/common/module3"], function(mod2, mod3) {
  // do something
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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