javascript - 为什么 part_1.js、part_2.js 出现在我的 assetic 编译代码中

标签 javascript symfony assetic

当我使用 assetic 编译代码时,我的 js 文件被命名为 part_1.js、part_2.js。我在我的代码中的任何地方都看不到这个对 part_ 的引用。这是从哪里来的?

配置.yml

assetic:
     assets:
         our_custom_js:
            inputs:
                - '@MyBundle/Resources/public/js/base.js'
            filters:    []
            output: 'custom.js'
         fos_js_routes:
             inputs:
                 - 'bundles/fosjsrouting/js/router.js'
             output: 'fos_js_router.js'`    

base.html.twig

{% javascripts combine=false output="sandbox.js"
    '@our_custom_js'
    '@fos_js_routes'        
%}
    <script src="{{ asset_url }}"></script>
    <script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>

{% endjavascripts %}

我的源最终看起来像这样

<script src="/sandbox_part_1.js"></script>
<script src="/js/routing?callback=fos.Router.setData"></script>
<script src="/sandbox_part_2.js"></script>
<script src="/js/routing?callback=fos.Router.setData"></script>

这里也有人问过这个问题How to make Symfony 2 asset compilation to product different filenames?

最佳答案

刚刚回答了同样的问题here .在开发环境中访问您的应用程序时添加“part_#”字符串 (app_dev.php)。

默认情况下,{% javascripts %}将使用 <script> 打印所有 Assets /脚本每个脚本的行。在生产环境中,它们是结合在一起的。

{% javascripts %}功能就像一个foreach在开发环境中循环,同时它将所有 Assets 合并到一个 <script> 中线在生产。如果您查看文档中的 PHP 脚本,您会发现它使用的是 foreach。 :

<?php foreach ($view['assetic']->javascripts(
    array(
        '@AppBundle/Resources/public/js/*',
        '@AcmeBarBundle/Resources/public/js/form.js',
        '@AcmeBarBundle/Resources/public/js/calendar.js',
    )
) as $url): ?>
    <script src="<?php echo $view->escape($url) ?>"></script>
<?php endforeach ?>

你的 base.html.twig 应该是这样的:

{% javascripts combine=false output="sandbox.js"
    '@our_custom_js'
    '@fos_js_routes'        
%}
    <script src="{{ asset_url }}"></script>
{% endjavascripts %}
    <script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>

当对方<script>不在javascripts里面部分,它不会在循环中,因此只会打印一次。

关于javascript - 为什么 part_1.js、part_2.js 出现在我的 assetic 编译代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22519271/

相关文章:

css - Assets 转储后将 Assets 恢复为动态模式

css - assetic:watch 生成空的 css 文件

javascript - 将 ('change' ) 的事件监听器添加到 Google map 信息窗口

php - 如何使用 assetic 将图像复制到 Web 文件夹

javascript - 如何根据其他列动态更改 Bootstrap 列宽度?

parameters - 如何将我的 Symfony 2 项目设置为使用 parameters.yml 而不是 parameters.ini?

php - symfony 2 多对多关系的固定装置

php - FOSUserBundle - BadCredentialsException

javascript - 使用 .prototype 将方法添加到变量

javascript - 使用 $.each 的 JSON 嵌套解析帮助