limodou 看 Flask:与 Uliweb 有何差异?
---
Flask的作者就是Werkzeug的作者,也是Jinja的作者。而Uliweb的底层是使用Werkzeug来做的。因此从一些功能和模块的使用上,Uliweb与Werkzeug是类似的。那么下面是我粗浅看了一下Flask的文档和某些例子了解到的一些东西。当然,从我的角度,可能会主要从框架功能和设计上来了解,并且有可能会与其它的框架进行对比分析。
1. 基本结构
的确是一个微型框架!
为什么这么说?因为它的功能只是完成了基本Web的功能。没有ORM,因此你可能要使用sqlalchemy。有模板(使用jinja),有 Session,有Cookie(因为Werkzeug都带这些,当然我个人认为功能有限)。做简单的Web应用够了。目前没看到有命令行工具。调试运行的话就可以在主程序的__main__中来写。因此和web.py更为接近。不过web.py有简单数据库的封装。有约定的运行目录,约定了模板和静态文件存放的位置。没有app结构的默认支持。没有静态config文件定义。没有看到middleware的支持(不过看到有after_request之类的decorator不知道是不是类似的东西)。
2. 开发
提供了象url_for之类的url反向映射方法。提供app.route()来定义url。这两点和uliweb是一致的。对于模板,提供了类似 django的render_to_template的方法,需要显示提供模板名称。而uliweb和web2py则支持缺省的模板名称。url对应的处理采用函数方式,比如接近MTV的开发模型。提供了类似web2py的message flash的机制(即在模板中可以显示一个返回的信息),这是通过在模板中预定义相应的显示实现的。view函数中不需要显示定义request, response,可以从Flask中导入这些对象在view函数中使用。这一点接近uliweb。不过uliweb导入request只是可选的,uliweb会自动在view的环境中注入一些对应供view方法直接使用。
3. 扩展
Flask已经提供了一些功能的扩展模块,如open_id的支持。是很好的学习材料。
4. 文档
的确不错,内容详细。
现在看一看uliweb,的确从Flask可以学到不少东西,比如:扩展性,还可以从Flask中学到一些扩展模块。文档,需要进一步提高。 Message Flash的支持。当然uliweb对Flask要大很多,比如:app结构的支持,ORM的支持,Form支持等。这些在Flask不是内置的,需要使用其它的库。不过,因为它是一个微型框架,所以这些反而可以认为是灵活性的一部分,不是必须的。而uliweb则更多象web2py和django一样,希望减少用户自已的选择,至少可以先有一个默认的可以使用。
以上是对Flask的一些简单了解和体会,供大家参考。
update 2010.6.2 刚才又看到Flask是支持外部config的定义的,而且支持的方式还挺多,在此更正一下。配置项的名称规则和django的一样,必须是大写的英文标识符。
---
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。