runopencode / assets-injection
资产依赖注入库。
Requires
- kriswallsmith/assetic: ^1.0
- symfony/yaml: ^2.0
This package is auto-updated.
Last update: 2024-09-17 10:04:07 UTC
README
资产注入库缺少资产管理组件,该组件将依赖注入和Assetic结合在一个库中,帮助全栈开发者/前端开发者在不担心依赖和包含顺序的情况下,将必要的javascript和stylesheets包含到模板中。
如果Bower或Components(或其他类似项目)可以帮助您从GitHub将资产拉取到您的项目目录中,此组件将帮助您将这些资产包含到模板中。
如何?通过示例学习...
在这个示例中,我们将假设您使用Twig。所以,在您的模板
<html>
<head>
<!-- ... your code ... -->
{% css %}
<!-- ... your code ... -->
</head>
<body>
<!-- ... your code ... -->
{% inject 'my-asset-library' %}
<!-- ... your code ... -->
{% js %}
</body>
</html>
假设您的库 my-asset-library
依赖于 jquery-ui
,而 jquery-ui
需要 jquery
,这意味着您必须按照正确的顺序将此代码添加到 HEAD
/BODY
标签中。
此库解决了这个问题,解决所有这些依赖关系,根据库的定义加载和注入所有必需的javascript和stylesheets。因此,您的结果可能如下所示
<html>
<head>
<!-- ... your code ... -->
<link rel="stylesheet" type="text/css" href="lib/jquery-ui/jquery-ui.min.css" />
<link rel="stylesheet" type="text/css" href="app/my-app.css" />
<!-- ... your code ... -->
</head>
<body>
<!-- ... your code ... -->
<!-- ... your code ... -->
<script type="text/javascript" href="lib/jquery/jquery.min.css"></script>
<script type="text/javascript" href="lib/jquery-ui/jquery-ui.min.css"></script>
<script type="text/javascript" href="app/my-app.js"></script>
</body>
</html>
一个单独的 {% inject "library-name" %}
将帮您摆脱所有这些麻烦...!
而且,这还不是全部 - 您可以配置库将所有这些资产合并并压缩到一个文件中,因此,在生产环境中,您的结果可能如下所示
<html>
<head>
<!-- ... your code ... -->
<link rel="stylesheet" type="text/css" href="cache/app.css" />
<!-- ... your code ... -->
</head>
<body>
<!-- ... your code ... -->
<!-- ... your code ... -->
<script type="text/javascript" href="cache/app.js"></script>
</body>
</html>
您看到魔法了吗?
您是否看到在 HEAD
中的 LINK
标签被正确渲染,即使资产是在渲染逻辑之后注入的?我们没有使用 str_replace
,也没有使用一些令人讨厌的技巧 - 我们让Twig缓冲其输出并延迟执行模板的部分,以实现此结果。
这不是一项容易的任务,请参阅: Sonata基本布局,注意底部的 {{ sonata_block_include_stylesheets('screen', app.request.basePath) }}
- 样式表不是在它们应该的位置加载的 - 在 HEAD
标签中。
我们找到了克服上述问题的方法,并在这个库的开发中考虑了Sonata和Drupal动态块内容。
开发中
请注意,这个库仍在积极开发中,预计2015年10月将发布第一个版本,以及Symfony包。