javascript - 带有 assetic 的 symfony 内联 Assets

标签 javascript css symfony assets assetic

我有以下基于 Symfony2 文档的代码:

    {% block javascripts %}

        {% javascripts filter="?jsqueeze" output="js/app.js"
            "%kernel.root_dir%/Resources/assets/js/one.js"
            "%kernel.root_dir%/Resources/assets/js/two.js" %}
            <script src="{{ asset_url }}"></script>
        {% endjavascripts %}

    {% endblock %}

这就像魅力一样。

我想做的,是代替

<script src="{{ asset_url }}"></script>

使用类似的东西:

<script> ... inline asset contents here ... </script>

我尝试了 assetic 文档并深入研究了 AsseticTokenParser 和 AsseticNode 类,但找不到引用实际文件路径而不是 url 的变量。

通常我用css而不是js来做,但应该是同一个概念。

谢谢!

最佳答案

在生产模式下,symfony 生成一个指向静态文件的链接,可以直接将其包含到模板中。此文件需要使用类似以下内容生成:

php app/console assetic:dump --env=prod --no-debug

在开发模式下,没有生成可以包含的静态文件。 asset_url 包含一个 url,它将调用 symfony Controller ,后者将动态生成所需的 js/css 文件。显然,在 symfony 中包含 Controller 的输出非常容易:

{% render asset_url %}

为了回答我自己的问题,可以编写一个 twig 扩展,其中包括一个静态文件或将请求转发到 render 方法,具体取决于它是在生产模式还是开发模式下调用的。

如果/当我写这样的扩展时,我会更新这个页面。

另一种选择是不使用 assetic 的开发模式,而是始终动态生成静态 css/js 文件:

php app/console assetic:watch

然后一个简单的 include 就可以了。

我希望 Symfony 中有一个开箱即用的方法来完成这个常见任务。

关于javascript - 带有 assetic 的 symfony 内联 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902590/

相关文章:

Javascript:将多个元素创建到 `for` 循环中

css - 如何测试特定 CSS 属性的浏览器性能?

symfony - 如何获取twig文件的内容

javascript - Fabric.js 路径数组有大小限制吗?

javascript - 如果 CSS3 过渡不存在,使用 Modernizr 和 jQuery 来制作动画

javascript - 如何将 HTML block 动态添加到页面中?

php - Symfony 4 不 Autowiring 动态路由 Controller

symfony - 在 Symfony2 中创建 block 的最佳方法

javascript - 如何实现具有尾随无限滚动的 ui-grid

javascript - 一个函数中的全局变量赋值在另一个函数中无法访问