簡體   English   中英

Require.js-加載相對於服務器根目錄的模塊

[英]Require.js - loading modules relative to the root of the server

假設您有一個大型Web應用程序,並且決定使用require.js加載某些模塊。 為了使事情更容易些,讓我們假設所有模塊都直接存儲在服務器的根目錄下,並且所有模塊都有一個附加前綴(假設前綴由“ n /”組成),在加載模塊時應將其忽略。 在某些嵌套頁面上,例如[host]/path/to/page您想要定義一些依賴於某些任意模塊(例如n/my/modulename入口點模塊。 所以你有了:

define('entrypoint',['n / my / modulename'],function(modulename){....});

但是,當您打開頁面時,require.js決定根據相對於當前文檔位置的模塊名稱加載模塊-因此它嘗試獲取[host]/path/to/page/n/my/modulename 到目前為止,您認為可憐的require.js只是盲目地工作,並且不知道模塊的瘋狂位置。

那么您如何知道要求重寫路徑? 根據Require.js文檔,我們可以嘗試以類似於以下方式進行配置:

require.config({
    baseUrl: '/'
})

那行不通

所以讓我們嘗試一下

require.config({
    baseUrl: ''
})

沒有。

require.config({
    baseUrl: '/',
    paths: {
       n: ''
    }

})

還是錯

require.config({
    baseUrl: '/',
    paths: {
       n: '/'
    }
})

快好了。 現在,您意識到require嘗試從以下路徑加載模塊: http://my/modulename ,您開始懷疑該庫的作者是誰。

經過一番苦苦掙扎,我認為我找到了適合我的用例的唯一合適的解決方案。 您必須使用以下命令配置需求:

require.config({
    baseUrl: '/',
    paths: {
       n: 'FOO/../'
    }
})

現在,它終於抓住n/my/modulename從URL http://[host]/my/modulename

暫無
暫無

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

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