1

我正在寻找一些使用 @import '*.js' 的解决方案,例如在 Symfony 2 项目的 less css 中。有什么插件吗?在文件中控制而不是在树枝中以正确的顺序硬写'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...});
});
4

2 回答 2

1

我发现RequireJSBundle:

https://github.com/hearsayit/HearsayRequireJSBundle

于 2013-02-18T12:05:18.043 回答
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 文件。

于 2013-04-19T17:43:09.473 回答