14

对于 django 项目,有一个很棒的工具叫做django-compressor。它将compress模板标签下的所有 js 或 css 文件组合到单个缓存文件中,如下所示:

{% load compress %}

{% compress css %}
<link rel="stylesheet" href="/static/css/one.css" type="text/css" charset="utf-8">
<style type="text/css">p { border:5px solid green;}</style>
<link rel="stylesheet" href="/static/css/two.css" type="text/css" charset="utf-8">
{% endcompress %}

我想知道龙卷风项目是否有类似的东西?或者可能有任何解决方法/替代解决方案?

我在 github 上找到了这个项目,但它不再维护。

4

3 回答 3

7

看看tornado_utils,它应该做你想做的事。特别是看一下tornado_static.py

tornado_static 是一个用于在 Tornado Web 应用程序中显示静态资源的模块。

它可以处理合并、压缩和为 URL 提供适合激进 HTTP 缓存的理想重命名。

于 2013-04-26T11:29:07.180 回答
3

到目前为止我见过的最好的选择是WebAssets

来自文档: webassets 是一个通用的、独立于依赖项的库,用于管理 Web 应用程序的资产。它可以合并和压缩您的 CSS 和 JavaScript 文件,支持各种不同的过滤器,并支持使用 CoffeeScript 或 Sass 等编译器。

您可以将它与 tornado 一起以独立模式使用(请参阅特定文档)。

设置简单且非常简单:

from webassets import Environment
static_directory = "../static"
output_directory = "/static"
my_env = Environment(static_directory, output_directory)

当然,您可以更好地自定义它。其余的在文档中得到了很好的解释。

主要特点:

  • 易于集成
  • 可以提前压缩静态文件(命令行工具)
  • 可以动态压缩静态文件
  • 支持大多数压缩/压缩库(JS、CSS)
  • 支持在浏览器内编译 LESS/SASS
  • 支持在浏览器内压缩 JS 模板(Handlebars...)
  • 支持 CSS 精灵映射器

正确配置后模板(此处为 Jinja2)的示例:

# css
{% assets filters="cssmin", output="css/compiled-layout.css",
    "css/custom.css",
    "css/bootstrap-datepicker.css",
    "css/typeahead.css" %}
    <link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}">
{% endassets %}

# js
{% assets filters="jsmin", output="js/lib/compiled-libs.js",
    "js/lib/jquery-2.1.1.min.js",
    "js/lib/jquery-ui.min.js",
    "js/lib/bootstrap.min.js",
    "js/lib/bootstrap-datepicker.js",
    "js/lib/d3.min.js",
    "js/lib/typeahead.bundle.min.js",
    "js/lib/moment.min.js",
    "js/lib/handlebars-v2.0.0.js",
    "js/global.js" %}
    <script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}

我已经使用与 Flask 绑定的 WebAssets 一年了,没有任何麻烦,它非常可靠,而且维护良好:它已经存在好几年了,迄今为止的最后一次提交是昨天

于 2014-12-28T20:29:16.780 回答
2

据我了解,通过研究开源tornado项目,在“龙卷风世界”中没有标准和规范的方法来进行静态文件缩小和压缩。

我见过的不同选择是:

只有前两个选项是特定于龙卷风的。其他工具需要手动绑定 Tornado 模板渲染和静态文件服务机制。

于 2014-12-26T08:26:39.383 回答