Web 开发利器
2014-05-27
Python 生态圈有两个现象级的 Web 框架 Flask, Django.
两个框架风格迥异, 但是都各自带动了庞大的生态圈, 这得益于二者灵活的扩展能力.
本书讲述的是基于 Flask 开发 Web 项目.
在对 Flask 框架的各个部分简要分析后, 本书介绍了
* 表单处理(Flask-WTF)
* 持久化(Flask-SQLAlchemy, 这货作者就是 Flask 的作者哟)
* 邮件
* 配置
* 一个真实案例: 模型, 用户验证, 角色, 关注, 写template, 写API
# 特点
* 线程局部变量
我不知道该把这个称作特点还是缺点.
至少在Flask的文档中作者明确给出这样的解释: 作为一个码农, 你也许会感到不适, 但我就想这样设计.
大部分的 Web 框架, 请求对象是外部注入的, 唯独 Flask 选择了全局 (flask.request, flask.g).
这个特点存在意味着你要小心使用这个特性, 否则很容易遇上需要调试大半天的Bug.
另外, request 不是那么容易造出来的.
不过, 这不是什么大不了的事情.
这个顺便波及到测试, 测试的setup 与 teardown, 你必须去营造一个上下文, 关于这点, 书中有讲解如何操作.
* Route/Template
框架的路由使用的是Werkzeug.
Template使用的是Jinja2, 当然不喜欢的话, 用别的也很简单.
* 足够小
Flask 只封装了请求, 路由, 模板这么几个功能.
用起来容易, 要写好也得费点脑子涨点经验才行.
说穿了也就是一句话:
> The idea of Flask is to build a good foundation for all applications.
> Everything else is up to you or extensions.
[Ref: What Flask is, What Flask is Not](http://flask.pocoo.org/docs/design/#what-flask-is-what-flask-is-not)
# 工作流
常规的三板斧: 开发, 测试, 部署.
书里面的部署和配置这两章节讲的很出色, 值得一读, 我给打五星.
# 插件
借用 @死鱼眼28号 常说的一句话, 很多 Flask 插件都写得很渣.
我表示 +1.
挑选插件时记得看下插件源码, 给作者的码力打个分再决定要不要用.
# 后记
关于 Web 开发, 我们的选择有很多:
* PHP(Laravel, CodeIgniter, Yii, Symfony, CakePHP, etc.)
* Ruby(RoR, Sinatra, etc.)
* Python(Flask, Django, Quixote, Web.py, Bottle, etc.)
* Java/Scala(Spring, Play!, etc.)
殊途同归, 他们也给出了几乎一样的解决方案.
我们可以看到大部分的 Web 项目都有着类似的目录分类, 类似的架构.
Flask 也不外乎如此: 帮你包装好请求对象, 剩下的路由, 路由逻辑, 响应内容你来填.
上面大部分框架从大学到工作或多或少使用过, 其实真正写到业务层面时, 框架那些都不是事儿.
你想要的东西, 或框架自己造, 或怂恿队友帮你造, 或你自己造, 总之基本上你总能拿到你要的信息.
不要被框架局限了视野哟.