各大主流语言web框架代码行数对比

2018-08-14 17:47:52 浏览数 (1)

Go

  1. gin 4762
  2. echo 4903
  3. iris 27854 肿
  4. buffalo 9391

Node

  1. koa 1667
  2. express 4051
  3. sails 17100 肿

Python

  1. tornado 21666
  2. werkzeug 20801
  3. flask 7489
  4. bottle 3756
  5. web.py 10830
  6. django 119701 泰肿

Ruby

  1. sinatra 2580
  2. grape 7229
  3. rails 130379 泰肿

Java

  1. spring-core 75207
  2. spring-aop 25984
  3. spring-web 49017
  4. spring-webmvc 60246
  5. spring-beans 51070
  6. spring-context 76356
  7. spring-boot 50847

统计方法

统计的时候我发现有些框架的代码比我想象的大的太多,所以我对这些代码量大的代码进行了反复统计,去掉路径包含test/example/benchmark/vendor等的代码,进行wc -l汇聚得到的最终结果。

这样直接对比对某些框架来说是不公平的。有些框架注释比较多,有些框架几乎没有注释。我的统计方法里面没有把注释去掉。不过注释并不是最重要的区别,最大的区别在于有些框架是微内核,有些框架是full-stack的。fullstack的框架可以直接拿来即用,而微内核一般还需要引入额外的插件和扩展才能达到相似的效果。除此之外还有一个重大的区别是HTTP服务器在某些语言中是内置的,而另外一些语言的HTTP服务器则需要单独编写。

从源码学习角度来说,自然还是应该选择微内核的,代码量大了阅读起来会是一头雾水。微内核短小精悍,浓缩的都是精华。

学习源码的相关链接

  1. https://github.com/pyloque/httpkids 1200行代码的Java Web框架
  2. https://github.com/pyloque/ormkids 2000行代码的Java ORM框架
  3. https://github.com/pyloque/rpckids 700行代码的Java RPC框架
  4. https://github.com/pyloque/iockids 200行代码的Java依赖注入框架

0 人点赞