框架小结

写在前面

这段时间(大概大半个月吧)用

nodejs(express) + mongodb(搭建完成)
django + mysql(写到登录和博客页面的解析结束)
php(laravel) + mysql(目前博客的构建)

都写了遍自己的博客
总台感受是,没有最好的框架,只有最适合的框架
小结一下,写的多有不到位,还望指出

Django

Django还挺好用的,而且组件相当全,本身基因决定是个服务于媒体站点的框架
自带auth、article、blog、admin这样的模块
非常方便好用,而且部署还算是比较方便的(天杀的sae竟然只有1.4的django,应用引擎们对某些框架不是特别友好唉)
而且app这样的概念非常棒,可以木有顾虑的删除某个app子目录而不影响整个应用,在其他框架里比较少见的优点。

要说缺点的话

总感觉Django框架的速度比php的框架要慢,速度一般般吧,虽然可以用c改写组件,但是好多国内的应用引擎不支持CPYTHON
template很弱还不太好换
比如我在用的sae(再来一遍吐艳的sae)

就这个框架本身而言,优缺点是相生的

  • 组件的丰富就构成了第一个缺点,大包大揽,框架不够轻。虽然不要的组件也不会影响效率,可以自己在原生的组件基础上修改自己的model出来,很人性化(说好的缺点呢= =),但是不是那么好改的。他自己的auth模块改了很久,因为他是Nickname unique,耦合性高,牵一发动全身
  • 最为人吐槽的一点,就是官方文档和官方教程有点简陋,而且我至今木有找到一个非常新的教程(本人用的是1.8的系统),边看官方的文档,然后借助stackoverflow到处填坑;
  • 坑比较多,更新官方称是向后兼容的,其实1.7、1.8已经变动非常大了,但是主流的这些个app engine还没有支持最新的,django book写只写到了1.6,所以好多还多坑啊(主要是我还不习惯完全用文档来学习0.0)

总结来讲:
Django是一个相对比较重的框架,大包大揽,组件的可替换和扩展性比较差。如果你的web开发风格和django很相似,那django对你来说简直是仙丹,但是如果有很多相悖的地方,改造起来很痛苦,甚至不如自己组建一个框架。


Express

JavaScript真是个又爱又恨的语言(Php:主人那不是我么,爱我你不怕么O.O),优点是动态语言这个大类都有的,不过缺点啊。。回调用来处理小程序的非阻塞还好,试想一下如果是写一个逻辑稍复杂一些的,cb套cb想起来就有点恐怖啊,非阻塞也有非阻塞的坏处。
不过很多大神表示这个还是很好克服的,以后关注一下。作为一只前端,能用JavaScript来写后台,太浪漫了。

不过,我用NodeJs遇到的最大的一个困难,是mongodb的model层,我先后用monk、mongoose管理mongodb,monk非常简洁,当然功能不够丰富,没有model的概念,mongoose是有model的概念的,当时认证卡了比较长的时间。当时正好想试试django、php,这点就直接放下了,博客写完了没部署。

用的时间不长,不多写了,留个坑以后填。


Laravel

Php是个又爱又恨的典范

骂Php的人很多,因为他太流行了,份额巨大,也有托WP的福。
大家一直都这么说,不过这个语言就是为web而生的,不能再适合快速敏捷的Web开发了。

为什么大家都黑他,其实跟当年JavaScript很相像嘛,入门门槛很低,很多不重视技术的站长都拿来扫个两眼视频教程,想怎么写就怎么写,JavaScript往HTML里到处写、随便命名(这错误自己入门时候经常犯),不像Java、Python的使用者那样平均素养来的高
写Php的就更不说了。。我相信有非常非常多的人都是在不合理的使用Php,比如把视图、逻辑、数据模型全都混在一起。

Laravel提供了一个比较完善的解决方案

我用过的框架不多,公司里用的Java的Spring,自己也只用过屈指可数的框架。

但是一用到Laravel瞬间觉得世界都美好了。

  • 开发优雅、简单、语义化,开发的非常开心,不到2天就基本写完了,一些基本的组件很轻很好扩展,比如用户认证这块,甩了Django好远,而且有Eloquent ORM这么强大的model层组件,非常非常好使。
  • 部署快捷也是优势,直接传文件,改一下.htaccess就上线了,对于中小型的web开发是神器级别的。

缺点呢

  • 调试真的不是非常方便,有点反人类,duang几个翻页的信息,问题定位比较慢。Laravel中文社区上面有问答区,还是比较活跃的。
  • 路由模块有点反人类,个人认为不如django的正则优雅。有时候会出奇奇怪怪的问题。
  • 其他暂时没发现什么。

个人最习惯用的还是Laravel

2015.5.30