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