python web 框架可真多!几乎所有比较python web框架和ruby web框架的时候都会提到这个现象。
最近几天我也基本上是钻在这一堆框架(和一堆评论比较的文章)里面度过的。
现在开学了,轻松了一天,似乎可以回过头来好好看看这个问题了。
首先我想产生众多框架的关键原因在于:开发一个新框架实在太简单了,而开发一个满足所有人需要和喜好的框架却是不可能的!
每个框架都有它的特色,都有它存在的理由。而当你稍微走近看的时候你会发现这些框架的结构是如此的相似,毕竟都逃不过mvc的框框。也有仁兄把这些个结构归纳为: url dispatcher,controller ( 就是django的view ) ,model,template.
不光结构相似,使用到的组件也都是那么几个 python 模块,基本上都是可以轻松替换的。所以为什么说这些个才开发了几个月的web框架就已经如此的成熟,因为这些模块早已久经考验。
框架的差别基本只存在于细节,只存在于底层实现,只存在于对快速开发与灵活性之间的权衡。
常用的组件都有哪些呢?不妨收集一下 :)
1、url dispatcher:
django 的基于正则表达式的
cherrypy 的基于 object publisher 的
routes 学 ror 的
还有 paste 的简单的 urlmap
2、templating:
模板系统比较多,详细列表请看http://wiki.python.org/moin/Templating
我所知的几个比较常用的是:
django template system (简单易用,适合设计人员使用)
myghty (功能强大,基于组件)
kid (基于xml,对xml文档的生成相当自然)
3、orm:
sqlalchemy
sqlobject
django orm
另外python中还有webpy这类的"微型"框架,不熟悉,也就不敢多加评论了。
而对于 ror vs python web frameworks 的争论,我感觉这种争论更多的是集中在ruby or python的争论上,框架本身区别并不大。而这两种语言区别其实也不大,争论更多集中在一些 features 的比较和美学观念上差异。而ruby 和 python 最大的观念的差别就是:
ruby:there is more than one way to do it.
python:there should be one obvious way to do it.
了。
不管怎么说百家争鸣是个好事,web框架如此,ruby和python的存在也是如此。具体选择取决于你自己了。
------------------------------------
web框架详细列表:
http://wiki.python.org/moin/WebFrameworks
http://wiki.woodpecker.org.cn/moin/PyWebFrameList
所有研究python web框架的朋友不得不看(至少我是这么认为)的一个东西:
http://wsgi.org/
http://www.python.org/dev/peps/pep-0333/
http://wiki.woodpecker.org.cn/moin/WSGI
最后还有两篇好文想与大家共欣赏:
People Who Drive Silver or Blue Cars Should NOT Read This
Pronouncement
2006年9月4日星期一
python web 框架可真多!
订阅:
博文评论 (Atom)
Profile
- 黄毅
- 深圳, 广州, China
- I Love Python !
Recent Posts
Recent Comments
Tags
- 设计模式 (1)
- ajax (3)
- allegra (1)
- cherrypy (1)
- compiler (1)
- continuation (2)
- descriptor (1)
- django (17)
- dotnet (1)
- framework (2)
- functional (1)
- genshi (1)
- gtk (1)
- haskell (1)
- inkscape (1)
- IronPython (2)
- javascript (1)
- libevent (1)
- mako (1)
- metaclass (4)
- mochikit (1)
- network (1)
- newforms (1)
- orm (1)
- others (18)
- paste (1)
- PEAK (1)
- pickle (1)
- ply (1)
- pocoo (1)
- pypy (3)
- python (38)
- python3000 (3)
- rails (2)
- REST (3)
- sqlalchemy (3)
- stackless (3)
- turbogears (1)
- tutorial (1)
- vim (1)
- web (11)
- wsgi (1)
Who"s Reading
Blog Archives
-
▼
2006
(31)
-
▼
九月
(14)
- compatibility of IronPython
- python is obvious !
- 意外收获:get_caller
- PLY: 一个以教学为目的的lex、yacc实现
- laying out an application
- django 的 contribs 之 comments
- Rails/Django comparison synopsis
- Pocoo: 半个框架
- usable stackless
- django 的 contribs 之 contenttype
- django apps repository!
- 使用 python2.5 中增强的 yield 模拟 StacklessPython
- python web 框架可真多!
- 有家的感觉,真好 !
-
▼
九月
(14)
3 评论:
python web 框架多是多,可真正要说有一个众望所归的框架,可以说是没有。
百家争鸣当然是个好事,一枝独秀更难能可贵,而且也是必要。
群龙无首的日子更是打口水仗。
我觉的不会存在这么一个众望所归的框架。
只能根据自己的需求选择合适的框架。
这种情况确实有个缺点就是会让刚进来的兄弟感到迷茫。不过当他知道自己确实需要什么的时候就好了。
这是技术和人心所向。
技术上的原因你也说了。一是简单,二是相似。
发表评论