这是我新挖的一个坑,不过已经填了些土了。它是什么呢?它是我写的一个web framework。怎么连我也造轮呢?记得我以前是更注重向现有框架做贡献的呀。

首先这个框架是一个试验品,或者说是主要是个人使用,因此我将有完全的控制权,这一点很重要。我可以用它学到许多框架的知识。以前只是使用,学习,象学过:cherrypy, Karrigell, snakelets等,不过没有做过什么开发;zope则是我学得最早了,不过也早就放弃了;django投入的精力最多,也开发了不少东西;再后来就是web2py了,不过重用搞得我很不爽,而且有些想法不被认同。但这些更多的还是集中在开发方面,对于框架本身了解有限,这次造轮是一个好机会。

其次用过的框架都有不让人满意的,而且许多观点也不被认同,因此我想信只有自已的才是最好的。就象我当初离开drPython自已创建了UliPad一样,想怎么做怎么么,很爽,这下子变成别人的观点将不被我认同了(是不是有些小人得志的感觉)?不过现实如此,我也很清楚地早就认识到这一点。因此要么你的努力被社区认同,要么另起炉灶,这种例子太多了,不然也不会有这么多的选择。那么django不让我满意的象模板,虽然对设计者友好,但是对程序员不友好,不想细说了。开发还不够简洁,在我写完Django Step by Step教程之后我已经意识到,用它作为入门的还不如使用Karrigell。太多需要知道的。不过这个也不好解决,功能随着复杂,自然会越来越难。而且这种不简洁是与web2py相比的结果。在学了web2py才知道web也可以这样开发,集成在浏览器几乎可以做一切事,自动的ticket,适合程序员的模板系统,自动维护的数据库模块,最少配置开发,约定url规则,这一些与django相比显得很轻巧和方便。如果你看过代码,的确要比django简单,但是说句实话,因为只是个人项目难免代码的风格和技术要逊于django。不过由于设计上不方便重用,url的固定方式,虽然支持routing的修改,但是还是不够方便,因此仍然让我感到遗憾。而web2py的设计上的修改很有可能是对web2py的某种否定,所以在我看来它无法按我满意的方向发展。不过web2py的作者massimo是一个非常让人敬佩的人,非常有创造力和激情。

所以作为尝试,我打算自已做一个框架,也许用在自已的项目中,也许是放在GAE上用。现在已经有一个雏开型了。目前项目地址在 http://mymisc.googlecode.com/svn/trunk/kuaiboo 你可以使用svn将代码取下来。可以说它是一个大杂烩,我目前集中了:

  • Werkzeug 用它来完成框架的搭建,因为它本来就是用来做框架的
  • webob 用来生成Request和Response对象,因为GAE和pylons就使用它。本来我是使用Werkzeug自带的,不过ygao建议我使用webob,好就先用它,不行再换。
  • 模板使用web2py的,不过进行了改造。我还是挺喜欢它可以支持python代码的方式,虽然块结束时要输入pass,不过没关系,可以用来解决使用缩近造成的排版问题。
  • 数据库还没有加,目前打算使用web2py的模块
  • Form处理我将使用我自已写的,不过更接近django的方式
  • URL mapping还没有想太好,目前我是采用Werkzeug的教程的方式,使用了一个@expose在每个输出的view方法前进行修饰。不过这样的做法需要将所有的view模块先导入才可以,不知道会不会影响效率。
  • 处理模式为MVT
  • View目前采用函数方式,正在考虑是否要使用class方式,不过这样一来decorator的方式就用不了了。
  • 组织方式采用django的app方式,你可以在多个app中组织代码,最终形成完整应用。
  • 与webserver交互一方面是支持wsgi标准,另一方面借用了web2py中的cherrypy模块,可以独立部署为服务器,不过只是测了一下,还没有加进去。

还有些没有想到或没有实现的东西,比如:i18n的问题。可能你已经看出,一个框架要关心的事情真是很多。不过我会一点点完善它。有兴趣你可以关注。那么我会在我的Blog上记录对它的修改,因为是个人项目,所以可能修改得随心所欲。当然欢迎你参与和讨论。


8条评论

  1. 叹气,再叹!为什么你老哥取的名字不象中文也不象英文,搞得我总是记不住。另外我发现有不少人把你的名字拼成limoudo

    合用就是好的,自己发明轮子不是错,谁叫这行没有行业标准呢。

  2. 强烈支持,毕竟中国人做的东西更符合中国人的习惯,就像NEWEDIT,建议这个框架在设计之初就考虑好对GAE的支持。

  3. > 组织方式采用django的app方式,你可以在多个app中组织代码,最终形成完整应用

    model 要怎麼重用呀?

    上面講到 Werkzeug, webob 其實就是 pylons 基本了.

    修改 pylons 增加自己喜愛的模板, 或者加入 tg2 開發可能也不錯.

  4. 不错不错,期望看到国内成熟的python web framework..

  5. 迈出了第一步,可喜可贺.

  6. Model正在考虑,而且不想绑得过死。至于象tg和pylons有时间我会学习一下,不过这个框架不是为了替换某个template,而是想从开发上更符合个人习惯,所以从处理,从架构的组织上会按自已的想法来搞,而不是基于别人的开发思路。

  7. 所谓“我注易经,易经注我”。

  8. 名字好,像YAHOO, GOOGLE

    德国有个公司也是刚换名Kizoo (Combots is dead, Kizoo is alive!)原名是Web.de, 几年前2亿卖掉主业后, 更名为Combots一直在烧银子!

发表评论

评论也有版权!