【问题标题】:"import" dependencies solution for assetic资产的“导入”依赖解决方案
【发布时间】:2013-04-20 01:43:09
【问题描述】:

我正在寻找一些使用 @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...});
});

【问题讨论】:

  • 不,@i​​mport 不是 javascript 关键字。你可以找 AMD(requirejs) ,或者 browserify 等等...

标签: javascript symfony import dependencies assetic


【解决方案1】:

【讨论】:

    【解决方案2】:

    以 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 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多