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匯聚獲得的最終結果。git
注
這樣直接對比對某些框架來講是不公平的。有些框架註釋比較多,有些框架幾乎沒有註釋。個人統計方法裏面沒有把註釋去掉。不過註釋並非最重要的區別,最大的區別在於有些框架是微內核,有些框架是full-stack的。fullstack的框架能夠直接拿來即用,而微內核通常還須要引入額外的插件和擴展才能達到類似的效果。程序員
從源碼學習角度來講,天然仍是應該選擇微內核的,代碼量大了閱讀起來會是一頭霧水。微內核短小精悍,濃縮的都是精華。github
學習源碼的相關連接
- 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程序員,表示他們真得很幸苦。web