2013-02-18 75 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文件。

相关问题