1

Symfony 2 プロジェクトの CSS の少ない @import '*.js' を使用するための解決策を探しています。そのためのプラグインはありますか?小枝で「javascript」を正しい順序でハードに書くのではなく、ファイル内で制御するのがいいでしょう。

明確でない場合:

今日、スーパークラスの事前定義を確実にするために、ロード順序を制御する必要があります。

{% 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

0

JavaScript モジュールを CommonJS 形式で記述し、 cjsDeliveryBundleを使用します。

クライアント側アプリケーションが pear と pip の 2 つのモジュールで構成されているとします。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 は自動的に依存関係を解決し、モジュール化されたアプリケーション全体を 1 つの JavaScript ファイルにコンパイルします。

于 2013-04-19T17:43:09.473 に答える