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

2018-05-05 12:54:34 +08:00
 shellquery

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 的框架可以直接拿来即用,而微内核一般还需要引入额外的插件和扩展才能达到相似的效果。

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

学习源码的相关链接

  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 依赖注入框架

最后请允许我同情一下 Java 程序员,表示他们真得很幸苦。

9067 次点击
所在节点    程序员
52 条回复
loading
2018-05-05 21:55:54 +08:00
web.py 居然比 flask 要多,吓到我了。
FaiChou
2018-05-05 22:07:47 +08:00
react 呢?
shellquery
2018-05-05 22:49:02 +08:00
@FaiChou react 是客户端,这里怼的是服务端
shellquery
2018-05-05 22:51:40 +08:00
@murmur 你说的是 dev 依赖,不考虑 dev 依赖,一个纯粹的 web 服务器也会有很多依赖包,但是不至于 100 来个
murmur
2018-05-05 23:04:17 +08:00
@shellquery dev 依赖咋就不算依赖了呢
按你这么算 java 打出来就一个 war 包呢
shellquery
2018-05-05 23:12:01 +08:00
@murmur dev 依赖是可选依赖,你完全可以不使用 dev 依赖
ylcc
2018-05-05 23:39:45 +08:00
tornado 不只是是一个 web 框架,里面还实现了自己的异步网络库,感觉不能这么跟 flask 比较。。。ps:行数的比较似乎不是很有意义
conn4575
2018-05-06 02:00:25 +08:00
突然觉得 tornado 真是不简单,和 werkzeug+flask 差不多的代码量,功能比后者多了许多,还包括自己实现了 asyncio,web 框架源码学习的典范!
swat199538
2018-05-06 10:39:49 +08:00
web 方面居然没有 PHP ?
faywong8888
2018-05-06 11:27:23 +08:00
竟然没有 lisp/clojure ?
shellic
2018-05-06 11:41:49 +08:00
PHP 表示不服
bestkayle
2018-06-11 16:16:53 +08:00
web 框架没有 PHP 的是几个意思

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/452325

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX