簡體   English   中英

如何使用相同的配置文件為帶有requirejs的模塊提供服務,以及如何在服務器端使用r.js進行串聯和最小化?

[英]How to use same config file for serving modules with requirejs and using r.js on the server side to concatenate and minify?

我正在開發一個使用requirejs從Web瀏覽器動態加載模塊的項目。 其中一些模塊是供應商文件,例如jQuery,它們都通過bower安裝到文件夾/project/root/lib/ 該項目的模塊位於/project/root/components/文件夾中。 所以我有一個requirejs配置, components/main.js ,看起來像這樣:

  requirejs.config({
    baseUrl: '/components',
    paths: {
      jquery: '/lib/jquery/jquery',
    }
  });

這樣,當請求供應商模塊時,require通過使用在paths定義的映射找到它,而所有其他模塊都相對於components

我還想使用r.js進行串聯和縮小,並將所有JavaScript文件簡化為app.js以便在生產中使用。 我能夠使用r.js -o build.js成功執行此任務。 這是build.js樣子:

({
    baseUrl:'components',
    out:    'js/app.js',
    name:   'app',
    paths: {
      jquery: '../lib/jquery/jquery'
    }
})

但是,由於在我的require.js配置( main.js )中定義了許多供應商文件路徑,因此我不想在兩個不同的文件之間復制配置。 我寧願使用單個配置文件。 問題在於main.js中定義的路徑是絕對路徑( /lib/.../components ),因為它們是URL路徑,但是build.js的路徑必須是相對路徑( ../lib/...../lib/... / ./components ),因為它們是文件系統路徑。 有沒有辦法協調這些差異並僅在main.js定義路徑,然后我在mainConfigFile中使用mainConfigFile build.js 我嘗試在build.js使用名為map的require config,但是此方法要求我為每個模塊定義一個新的映射,這與重新定義所有路徑一樣糟糕。 本質上,我想進行一攬子映射。

有沒有一種方法可以合並我的配置文件以避免重復的路徑定義?

沒有什么要求在傳遞給RequireJS的配置中使用絕對路徑。 RequireJS使用baseUrl作為起點來解釋相對路徑,因此這應該起作用:

requirejs.config({
    baseUrl: '/components',
    paths: {
      jquery: '../lib/jquery/jquery',
    }
});

通過將/components../lib/jquery/jquery合並,RequireJS將為jquery執行最終路徑計算,解析為/lib/jquery/jquery ,該路徑與最初存在的絕對路徑完全相同。

暫無
暫無

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

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