【问题标题】:Where store css and js in symfonysymfony 中的 css 和 js 存储在哪里
【发布时间】:2018-02-12 17:53:57
【问题描述】:

我使用 symfony 广告我读到存储图像 js 和图像的最佳实践是 /web

<link rel="stylesheet" href="{{ asset('css/bootstrap.min.css') }}" />

如果我想使用assetic,我找到了像

这样的例子
    {% javascripts '@AppBundle/Resources/public/js/*' output='js/compiled/main.js' %}
    <script src="{{ asset_url }}"></script>
{% endjavascripts %}

@AppBundle 是 Bundle 的逻辑名称

逻辑文件名¶

当您想从包中引用文件时,请使用以下表示法: @BUNDLE_NAME/路径/到/文件; Symfony 会将@BUNDLE_NAME 解析为 包的真实路径。例如,逻辑路径 @AppBundle/Controller/DefaultController.php 将被转换为 src/AppBundle/Controller/DefaultController.php,因为 Symfony 知道 AppBundle 的位置。

我必须在哪里存储我的资产?

【问题讨论】:

    标签: php css symfony assetic


    【解决方案1】:

    如果您不使用资产,则应将可公开访问的图像和 js 放在 /web 目录中。

    如果您正在使用资产,您应该将您可公开访问的图像和 js 分别放在您的 @AppBundle/Resources/public/css 和 @AppBundle/Resources/public/js 中。然后您将不得不使用资产,资产将自动处理使其可供公众访问。您无需担心,通常它会过滤您的文件并将其复制到您的 /web 目录中。

    例子:

    {% block javascripts %}
        {% javascripts '@AppBundle/Resources/public/js/*' %}
            <script src="{{ asset_url }}"></script>
        {% endjavascripts %}
    {% endblock %}
    

    在此示例中,AppBundle 的 Resources/public/js/ 目录中的所有文件都将从不同的位置加载和提供。实际呈现的标签可能看起来像:

    <script src="/app_dev.php/js/abcd123.js"></script>
    

    有关更多信息,请阅读以下内容: http://symfony.com/doc/2.8/cookbook/assetic/asset_management.html#installing-and-enabling-assetic

    【讨论】:

    • 但是使用 Assetic,您可以在提供这些资产之前随心所欲地操纵这些资产(或从任何地方加载它们)。好的,但最佳做法是什么?捆绑存储在 web o 中?因为在此链接中symfony.com/doc/current/best_practices/… 资产位于 web 文件夹中
    • 我认为可以肯定地说不鼓励使用 Assetic,因为它甚至不再默认捆绑。如果您的资产很简单,那么只需将其放在 /web/css 和 js 下。如果他们需要一些服务器端处理(缩小等),那么请使用许多专门的 nodejs 工具之一,例如 gulp、webpack 或 browserify。
    • 我同意@Cerad。如果您打算在其他项目中重复使用您的包,请将其存储在您的包中。
    【解决方案2】:

    你应该把你的 css/js 文件放在 app/Resources/assets/css 和 app/Resources/assets/js 下(asset 文件夹可以是“public”文件夹)

    然后你应该使用assetic将最终的app.css和app.js放在web文件夹下(这是symfony项目中的公共文件夹)

    文档here(矛盾?)和here

    【讨论】:

    • 您的回答与您的第一个链接相矛盾。或许你可以再解释一下?
    • 你确定把asset放到app/Resources/assets/吗?
    • @cerad 为什么?我将我的资产(css 和 js)放在我的私有区域(app/Resources/assets)中,然后,我使用资产将最终文件 app.css 和 app.js 放在公共 Web 文件夹中。我认为,这是正确的,不是吗?
    • Assetic 不再默认通过 Symfony 交付。您链接到的最佳实践不鼓励使用资产。也许你应该删除你的第一个链接,然后明确你的建议与 Symfony 目前的建议相反。至少,删除链接会消除您答案中相当严重的矛盾。
    【解决方案3】:

    从 Symfony4.0 开始,最佳实践现在位于 root 目录中的新 /assets 目录中。

    这使您的前端开发人员和设计人员可以更轻松地工作,而不必陷入后端混乱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 2013-10-22
      相关资源
      最近更新 更多