2013-02-18 121 views
1

我正在尋找一些解決方案使用@import'* .js'就像在較少的CSS爲Symfony 2項目。 有沒有插件?這將是很好的文件控制,而不是在樹枝中以正確的順序書寫'javascripts'。「導入」依賴關係解決方案爲資產

如果我不明白:今天

,我們必須控制負載爲了確保超類的預定義:

{% javascripts '@AcmeDemoBundle/Resources/public/js/app.base.js' 
       '@AcmeDemoBundle/Resources/public/js/app.inheritancelevel1.js' 
       '@AcmeDemoBundle/Resources/public/js/app.inheritancelevel2.js' 
       '@AcmeDemoBundle/Resources/public/js/app.inheritancelevel3.js' 
       '@AcmeDemoBundle/Resources/public/js/app.starter.js' 
%}... 

我想要什麼:

{% javascripts '@AcmeDemoBundle/Resources/public/js/app.starter.js' %}... 

//.../app.starter.js 
@import 'app.baseclasses1.js' 
@import 'app.baseclasses2.js' 
@import 'app.baseclassesN.js' 
//.../app.baseclassesX.js 
@import 'app.superbaseclassesX.js' 
// an so on... 

唯一的解決辦法我知道的是將定義包含在功能中,並沒有多大用處:

loadUtil.register('some.package', function(){ 
loadUtil.import('some.base.package'); 
MyClass=new Class({extends: SuperClassFromSomeBasePackage...}); 
}); 
+0

nope,@import不是javascript關鍵字。你可以尋找AMD(requirejs)或者瀏覽器等等...... – mpm 2013-02-18 12:03:50

回答

0

寫CommonJS的格式你的JavaScript模塊,並使用cjsDeliveryBundle

假設你的客戶端應用程序由兩個模塊組成,pear和pip,其中pip需要pear。 pip.js應該是這樣的:

// pip.js 
exports.message = 'I am a pip.'; 

而且pear.js應該是這樣的:

// pear.js 
var pip = require('./pip'); // Assuming pip.js is in the same directory. Note that the .js extension is omitted in CommonJS. 

console.log('I am a pear, but also, ' + pip.message); 

如果您在pear.js點它,cjsDelivery會自動解決依賴性和編譯整個模塊化的應用程序到一個單一的JavaScript文件。

相關問題