Flask 在 first commit 之后 经过了 8 个年头终于走到了 1.0 版本,想必是对完成度很有自信。接下来一个月的时间,打算把 Flask 源码和以及其相关的组件的部分源码读一读,提升一下自己对Web 开发的理解。
flask 中两个文件夹,一个ext在1.0后完全移除了 from flask.ext.xxx import yyy 的写法
一个 json 文件夹 ,涉及flask自己对json的封装。
__init__.py import 了许多东西,列出了 Flask 提供的 API;
__main__.py 命令行flask.run的别称;
_compat.py py2/py3 兼容性支持,基于 six;
app.py Flask 类,核心, wsgi 的接口,先读之;
blueprint.py 蓝图,flask 根据路径组织代码的方式;
cli.py 命令行;
config.py 配置;
ctx.py 用来保持上下文的对象,使得 reqest这种每次代理每次都代表当前请求的状态;
debughelpers.py debug的helpers;
exthook.py 将扩展 flask.ext.xxx 转成 flask_xxx
globals.py 全局变量;
helpers.py helpers;
json.py json 支持;
logging.py 日志;
session.py 基于 itsdangerous 实现的各种会话类;
signals.py 基于 blinker 的对详见消息传递机制,使得代码根据事件来反应;
templating.py 模板系统,基于 jinja2;
testing.py 测试用,包含 FlaskClient;
views.py 试图类,flask 既可以用装饰器写视图函数,也可以写视图类;
wrappers.py 将 werkzeug 的 Request 和 Response 包一层,视情况读读werkzeug的源码。
Flask 这种好风凭借力,可插拔的设计,相比 battery-included 的 Django 更 Pythonic 一些,但是这两个各有所长,都是好框架。