前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flask assets压缩静态文件(flask 111)

flask assets压缩静态文件(flask 111)

作者头像
用户5760343
发布2019-08-21 17:03:08
1.2K0
发布2019-08-21 17:03:08
举报
文章被收录于专栏:sktjsktj

Flask-Assets插件用于将webassets整合进Flask项目中。

安装

使用下面命令进行安装

代码语言:javascript
复制
$ easy_install Flask-Assets

或者使用pip进行安装:

代码语言:javascript
复制
$ pip install Flask-Assets

使用说明

首先,创建一个Environments实例,并使用它初始化Flask应用,然后将Bundle对象注册到Assets上。

代码语言:javascript
复制
from flask import Flask
from flask.ext.assets import Environment, Bundle

app = Flask(__name__)
assets = Environment(app)

js = Bundle('jquery.js', 'base.js', 'widgets.js',
            filters='jsmin', output='gen/packed.js')
assets.register('js_all', js)

创建Bundle对象可以传递任意数量的源文件作为参数,使用output参数指定输出文件路径,使用filters参数指定过滤器。所有文件的路径都是相对路径,以应用的静态文件路径问基准。 除此之外,还可以从外部文件中读取配置来创建Bundle对象,例如YAML文件。 跟其他Flask扩展一样,一个Bundle对象可以被多个Flask应用使用,只需要调用Bundle对象的init_app方法即可。

代码语言:javascript
复制
app = Flask(__name__)
assets = flask.ext.assets.Environment()
assets.init_app(app)

使用打包文件

定义好资源文件assets之后,就可以将上配置的源文件进行合并与压缩处理,最终在页面中使用如下方式引用打包好之后的静态js文件。

代码语言:javascript
复制
{% assets "js_all" %}
    <script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}

每当第一次渲染模板的时候Flask-Assets都会对配置好的静态文件进行合并压缩处理,如果静态文件发生改变,也会自动重新打包。如果在app的配置中设置ASSETS_DEBUG=True,则每个源文件都会单独输出,而不会合并成一个文件。

Flask 蓝图

如果在项目中用到蓝图,则可以给源文件加上蓝图的前缀来引用蓝图中的静态文件。例如:

代码语言:javascript
复制
js = Bundle('app_level.js', 'blueprint/blueprint_level.js')

在上面的例子中,Bundle将打包以下两个文件:

代码语言:javascript
复制
{APP_ROOT}/static/app_level.js
{BLUEPRINT_ROOT}/static/blueprint_level.js.

如果你之前使用过Python的webassets库的话,就应该知道是用webassets的时候必须设置directoryurl参数,但是在使用Flask-Assets的使用并不需要,因为Flask-Assets使用应用的静态文件路径作为代替。但是Flask-Assets中也可以自定义diectoryurl,这种情况下Flask-Assets就不能在Flask的蓝图中使用了。

直接在模板中进行配置

也可以直接在模板文件中配置打包文件:

代码语言:javascript
复制
{% assets filters="jsmin", output="gen/packed.js",
          "common/jquery.js", "site/base.js", "site/widgets.js" %}
    <script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}

配置

webassets有许多配置选项,在Flask-Assets中既可以通过Environment实例对象进行设置,也可以通过app来进行设置。下面两条语句的效果是等价的。

代码语言:javascript
复制
assets_env.debug = True
app.config['ASSETS_DEBUG'] = True

更多的配置选项,请查看webassets的官方文档。

管理命令

如果你已经安装了````Flask-Script,就可以使用flaskext.assets.ManageAssets```命令:

代码语言:javascript
复制
from flask.ext.assets import ManageAssets
manager = Manager(app)
manager.add_command("assets", ManageAssets(assets_env))

上述的命令让开发者可以使用命令行命令来重新打包资源文件。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 使用说明
  • 使用打包文件
  • Flask 蓝图
  • 直接在模板中进行配置
  • 配置
  • 管理命令
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档