我这几天在微博上写了一句话: 回归简单,即便开始反而会变得更加复杂。
回想起当年刚用Django写素材管理系统还历历在目,最近却已经逐渐脱离Django了。
成长总是分阶段的吧,勇敢的抛弃一些东西,接纳新的东西,也许就是成长了。
至于原因呢,也是我一直在总结的,大家可以一起看一下。
Django适合做中型项目,但却不适合小型和大型项目
为什么这么说呢?
我可能不需要session,我也不需要数据库,但是我却要为Django那些繁琐的东西配置半天。当我被这些繁琐而无用的东西搞晕的时候,我感觉更像是在搭积木,而不是在创造一个伟大的东西。
由于工作的关系,在大型项目中,有一类不得不说的服务,那就是SNS应用。
SNS应用的特点是什么?注册用户量极大,活跃很少。大批的用户蜂拥进入可能只是看一眼就再没回来,但是你的数据却因为这些无用的用户变得庞大无比。进而导致Django默认的那些Model,admin全部都形同虚设,Django的那些所谓的优势荡然无存。
这可是说是Django的定位,也可以说是Django的尴尬,所以必然要有其他框架来弥补这些缺陷。
所以我在很早便开始了尝试:
web.py,Flask,都用了一下,感觉还是不够简单,而终于,我发现了bottle。
bottle真的是个非常小巧的框架,只有一个文件,3000多行,代码我也基本上都读了一遍。
ORM我选用了简单的autumn,因为并不会用到复杂的关系数据。
模板使用 jinja2,本身贴近django模板的语法,用起来也很熟悉。
form类使用 WTForms。
一切看起来都很美好,似乎该有的功能都有了,但是如果真的如此简单,就不会有文章开头那段话了。
要使他们协作起来是件麻烦的事情,最麻烦的就是unicode的问题。
本着输入的最开始就要转成unicode,输出之前才转成bytes的原则,在使用这些类的时候有一下几点要遵循:
|
|
|
|
OK,到此为止大功告成!
所有的组件都是我们可拆卸的,如果网站够简单,可以只有一个bottle;如果网站太复杂,我们可以任意的添加自己需要的模块,而且它们是真正做事的。