2014-01-15 54 views
0

我有兩個require.js應用程序。第二個使用第一個作爲依賴項。它看起來像:需要單獨的require.js應用程序

在APP1/main.js

requirejs.config({ 
    baseUrl : 'js', // baseUrl relative to app1 folder 
    paths: { 
     // paths used for app1 
    } 
}); 
requirejs(['module'], function (module) { 
    return module; 
}); 

這個文件需要被完全「獨立」,有其自身需要的配置,因此它可以加載其模塊和庫。

然後,在 APP2/main.js

requirejs.config({ 
    baseUrl : 'js', // baseUrl relative to app2 folder 
    paths: { 
     'app1' : '../app1/main' // Using the other app 
    } 
}); 
requirejs(['app1', 'module'], function (app1, module) { 
    console.log(app1, module); // The first one should be app1/module.js, the second app2/module.js 
}); 

該第二文件需要有其配置,而且還需要加載APP1/main.js作爲依賴就像是一個通常的模塊。

但是這兩個requirejs.config只是混合在一起,如果我在第一個需要一個文件,它使用第二個baseUrl或其他類似的問題。

所以:

  • 我怎樣才能把一個require.js應用到信守自己的配置可加載模塊?
  • 以前沒有建築可以做到這一點嗎? (我需要同時工作,並且我寧願不必每次更改內容都要等待構建)
  • 我閱讀了關於命名空間的一些解決方案,但沒有看到有關如何將它們用於這類情況 - 如果我必須在文件開始時手動添加它們,對我來說這不是問題。

回答

0

據我所知,您正在參考您的第二個應用的配置。我相信,你應該分開你的配置和這個app1模塊模塊。那麼你將能夠要求你的app1模塊沒有配置部分。

換句話說:

APP1/main.js

requirejs.config({ 
    baseUrl : 'js', // baseUrl relative to app1 folder 
    paths: { 
     // paths used for app1 
    } 
}); 

APP1 /模塊1

requirejs(['module'], function (module) { 
    return module; 
}); 

的index.htmlAPP1然後將更新ED以這種方式:

從這樣的事情:

<script type="text/javascript" data-main="js/main" src="js/libs/require.js"></script> 

到:

<script type="text/javascript" data-main="js/main" src="js/libs/require.js"></script> 
<script> 
    require(['module1']); 
</script> 

那麼你可能在你的第二個應用程序易用APP1 /模塊。

我用這個例子更新了我的demo repository。一探究竟。

+0

我的解釋可能沒有提供足夠的細節。模塊文件只是一個例子,但可能有任何種類的文件。關鍵問題是app1/main.js文件中發生的所有事情都必須使用自己的require配置文件,因此它可以在其文件夾中需要文件,而app2/main.js可以使用其文件夾中完全不同的配置文件,而且能夠加載app1/main.js文件。在你的文件中,只有一個配置文件將被這兩個模塊使用 – Malharhak

+0

@Malharhak是的,我理解你。你所需要做的就是在你的第一個模塊中按照方式分類,當你需要時,它的配置不是必需的(這就是我所描述的)。然後'''app/module1'''可能只是你的第二個應用程序需要的。 –

相關問題