作用:对css、js静态文件进行打包,打包成一个文件,然后去除文件里的换行、空行等进行压缩; 而且 Flask-Assets 还会使用特定的 HTTP Response Header, 让浏览器缓存这些文件, 只有在这些文件的内容被修改时, 才会再次下载

1、插件安装:pip install flask-assets; pip install cssmin; pip install jsmin

2、在py文件中进行打包对象的定义,前面的默认路径都是 /static,Bundel() 的构造器能够接受无限个文件名作为非关键字参数, 定义那些文件需要被打包, 这里主要打包本地 static 下的 CSS 和 JS 两种类型文件,filters是使用的过滤器类型,output是压缩后文件的存储位置,目录不存在可以自动创建

 #!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by miaoshuijian on 2017/7/12 from flask_assets import Bundle, Environment # Create the Flask-Assets's instance
assets_env = Environment()
# Define the set for js and css file. main_css = Bundle(
'media/css/bootstrap.min.css',
'media/css/bootstrap-responsive.min.css',
'media/css/font-awesome.min.css',
'media/css/style-metro.css',
filters='cssmin',
output='media/css/common.css') # <link href="/static/" rel="stylesheet" type="text/css" media="screen"/> main_css_screen = Bundle(
'media/css/jqvmap.css',
'media/css/jquery.easy-pie-chart.css',
    Bundle('css/layout.less',filters='less'), # 对less文件使用less过滤器,其他文件使用cssmin过滤器
filters='cssmin',
output='media/css/common_screen.css') main_js = Bundle(
'media/js/jquery-1.10.1.min.js',
'media/js/jquery.easy-pie-chart.js',
'media/js/jquery.sparkline.min.js',
'media/js/app.js',
'media/js/index.js',
filters='jsmin',
output='media/js/common.js')

3、在模板html文件中使用打包文件

 {% assets "main_css" %}
<link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}" />
{% endassets %}
  {% assets "main_css_screen" %}
<link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}" />
{% endassets %}
 {% assets "main_js" %}  <script type="text/javascript" src="{{ ASSET_URL }}"></script>  {% endassets %} 

4、注册打包文件

from packages.utils.assets import assets_env, main_css, main_js, main_css_screen

assets_env.init_app(APP)
assets_env.register('main_css', main_css)
assets_env.register('main_css_screen', main_css_screen)
assets_env.register('main_js', main_js)

5、在开发环境下不应该将 CSS/JS 文件打包, 因为我们可能会经常对这些文件进行修改, 所以需要设定在开发环境中不打包, 但生产环境中会自动进行打包

下面这个配置将控制是否打包css/js文件

    ASSETS_DEBUG = True

 

参考:1、http://blog.csdn.net/jmilk/article/details/53765082

   2、http://www.jianshu.com/p/2483777d858e

最新文章

  1. iOS 单例的销毁
  2. ACM 心急的C小加
  3. Linux进程间通信与线程间同步详解(全面详细)
  4. C# 多线程 lock 实例
  5. error: Unable to find vcvarsall.bat while install python library by pip install or python setup.py install.
  6. Ajax 如何提交集合到mvc后台
  7. oracle获取某一字段字符串长度
  8. WCF必须使用证书验证吗
  9. SQL语句:Group By总结
  10. JavaWeb(二)会话管理之细说cookie与session
  11. NodeJS跨域问题
  12. POJ-3660.Cow Contest(有向图的传递闭包)
  13. 文字创作类App分享-简书
  14. MyBean通用报表插件介绍
  15. Apache SSL 服务搭建
  16. 4556: [Tjoi2016&amp;Heoi2016]字符串
  17. pyhon模块之日志模块
  18. Python开发【第五篇】迭代器、生成器、递归函数、二分法
  19. mmc驱动的读写过程解析
  20. Web开发——前后台异步调用

热门文章

  1. bzoj 2120 线段树套平衡树
  2. HDU1166(线段树单点更新区间查询)
  3. java对象内存大小评估
  4. 6.memcached缓存系统
  5. JavaScript变量、数据类型、函数
  6. hdu 1932(spfa)
  7. 可折叠的listview 之ExpandableListView基本使用
  8. (一)shell基础
  9. js中OOP小指南
  10. xunsearch: 开启后台服务,索引……随笔记录