Go
- gin 4762
- echo 4903
- iris 27854 肿
- buffalo 9391
Node
- koa 1667
- express 4051
- sails 17100 肿
Python
- tornado 21666
- werkzeug 20801
- flask 7489
- bottle 3756
- web.py 10830
- django 119701 泰肿
Ruby
- sinatra 2580
- grape 7229
- rails 130379 泰肿
Java
- spring-core 75207 装着没看见
- spring-aop 25984
- spring-web 49017
- spring-webmvc 60246
- spring-beans 51070
- spring-context 76356
- spring-boot 50847
统计方法
统计的时候我发现有些框架的代码比我想象的大的太多,所以我对这些代码量大的代码进行了反复统计,去掉路径包含 test/example/benchmark/vendor 等的代码,进行 wc -l 汇聚得到的最终结果。
注
这样直接对比对某些框架来说是不公平的。有些框架注释比较多,有些框架几乎没有注释。我的统计方法里面没有把注释去掉。不过注释并不是最重要的区别,最大的区别在于有些框架是微内核,有些框架是 full-stack 的。fullstack 的框架可以直接拿来即用,而微内核一般还需要引入额外的插件和扩展才能达到相似的效果。
从源码学习角度来说,自然还是应该选择微内核的,代码量大了阅读起来会是一头雾水。微内核短小精悍,浓缩的都是精华。
学习源码的相关链接
- https://github.com/pyloque/httpkids 1200 行代码的 Java Web 框架
- https://github.com/pyloque/ormkids 2000 行代码的 Java ORM 框架
- https://github.com/pyloque/rpckids 700 行代码的 Java RPC 框架
- https://github.com/pyloque/iockids 200 行代码的 Java 依赖注入框架
最后请允许我同情一下 Java 程序员,表示他们真得很幸苦。