2013-04-20 101 views
14

對於django項目,有一個叫做django-compressor的很棒的工具。它結合下compress模板標籤所有的JS和CSS文件到一個緩存文件,像這樣:Python /龍捲風 - 壓縮靜態文件

{% 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上發現了this項目,但它不再維護。

回答

7

看看tornado_utils,它應該做你想做的。特別是採取看tornado_static.py

tornado_static是龍捲風網絡 應用程序中顯示靜態資源的模塊。

它可以照顧合併,壓縮和提供適合積極的HTTP緩存的URL理想更新 。

+0

非常感謝!由於缺少文檔,配置有點棘手,但它起作用。 – alecxe 2013-04-27 13:02:06

1

據我瞭解,從調查開源tornado項目沒有標準和規範的方式做靜態文件縮小和壓縮在「龍捲風世界」。

我已經看到了不同的選項,分別是:

slimit.minify()只有前兩個選項是龍捲風特定的。其他工具需要與Tornado模板渲染和手動靜態文件服務機制捆綁在一起。

2

目前爲止我見過的最佳選擇是WebAssets

從文檔: webassets是管理Web應用程序的 資產的一般,依賴獨立的庫。它可以合併和壓縮您的CSS 和JavaScript文件,支持多種不同的過濾器,支持使用編輯器如CoffeeScript或Sass。

可以在獨立模式與龍捲風使用它(見specific documentation)。

設定很容易和很簡單:

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

當然,你可以自定義它好得多。其餘的在文檔中有很好的解釋。

主要特點:

  • 易於集成
  • 可以壓縮靜態文件提前(命令行工具)
  • 可以壓縮在飛行
  • 靜態文件支持大多數縮小文件/壓縮庫(JS,CSS)
  • 在瀏覽器內部支持LESS/SASS編譯
  • 支持JS模板壓縮在瀏覽器內(手把...)
  • 支持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綁定一年的WebAsset,沒有麻煩,它非常可靠,加上維護良好:已經存在好幾年了,last commit to date was yesterday

+0

@alecxe精確度:我知道這是一個完整的資產管理框架,而不是像您問的那樣是一個簡單的庫,但我認爲這是質量制定的,是另一種值得挖掘的方法。當你有機會進一步研究時,告訴我你的想法。 – Jivan 2014-12-28 22:55:46

+1

謝謝你提供一個有趣的選項。我認爲它可以在龍捲風的獨立模式下使用。我希望今天有時間評估它 - 會回覆給你。 – alecxe 2014-12-29 14:20:02

+0

我瀏覽過幾個使用'tornado' +'webassets'的項目(例如[this one](https://github.com/bashwork/speleo/tree/master/speleo.service/service))。整合非常簡單且透明。不錯的選擇。再次感謝! – alecxe 2014-12-30 00:11:54