我想實現我的node.js服務器 指紋我使用requirejs和我的主網頁加載像這樣的腳本:在前端的NodeJS緩存requirejs
<script src="/public/assets2/scripts/lib/requirejs/require.js"></script>
<script src="/public/assets2/scripts/app/common.js"></script>
<script>
require.config({baseUrl: '/public/assets2/scripts/lib'});
require(['app/main']);
</script>
資產中內置了public/assets2
目錄。在重建時,我想要 將requirejs config baseUrl
更改爲散列版本 public/assets2/HASHHASH
。所以requirejs會請求這樣的腳本,如 :public/assets2/HASHHASH/scripts/app.main.js
將散列添加到baseUrl中是否是一個好主意?我認爲 這是推薦的方法,如果我理解正確。
資產仍然內置了public/assets2
,而不是在 public/assets2/HASHHASH
,所以我需要一個映射這些 兩者之間,或者實際上把資產注入HASHASH
目錄。有沒有 不錯的庫已經做到這一點,我怎麼才能簡單地實現這一點?
編輯
borschik是偉大的,但requirejs已經複製了我的所有資產注入 建立文件夾,它可以在以後要求他們。 borjik與requirejs是過量的 。但是同樣,requirejs沒有內置的緩存清除解決方案。根據我在這裏理解的:,建議使用 ,我將所有資產置於版本化文件夾中,並相應地修復我的baseUrl 。這是requirejs最簡單的修復方法,我甚至不需要從文件生成哈希,每生成一次生成任務都會生成一個哈希 。
問題我已經是步驟3
3。配置您的Web服務器(nginx的等),返回原始文件 即使您使用哈希
我要求的一種方便的方式來做到這一點就要求的NodeJS它。
例子:
GET public/assets2/<hash>/app/main.js
地帶哈希,並返回 public/assets2/app/main.js
另一個問題是,即使我只改變一個 文件中的每個資產搗毀。所以我想最終的解決方案是將它建成 requirejs。
r.js將複製與散列對應的所有資產 優化。然後在瀏覽器上,它會請求哈希文件的URL。 這將需要一個清單文件,在優化工具和瀏覽器上的requirejs之間。
好吧,如果你要處理的文件在客戶端,那麼也許[這](HTTP的HashMap:// stackoverflow.com/a/24680885/896280)將幫助你。 –
@ant_Ti仍然r.js需要生成具有哈希名稱的文件。那麼它需要生成一個清單文件來進行映射。那麼我可以重載加載方法。或者甚至更好,我可以將一個manifest選項傳遞給requirejs配置,所以它可以幫我實現! – eguneys
您可以使用[grunt-frontend](https://github.com/sergeche/grunt-frontend)任務 –