各大主流语言 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 程序员,表示他们真得很幸苦。

9033 次点击
所在节点    程序员
52 条回复
ofooo
2018-05-05 13:22:45 +08:00
python 比 go 差好多啊~~~
ioth
2018-05-05 14:09:02 +08:00
有钱人住别墅,没钱人住单间。
搞 java 的人都特别有钱。
ipwx
2018-05-05 14:17:41 +08:00
1、统计代码请用 cloc
2、Flask 依赖 werkzeug,只看 Flask 的行数,和其他对比的话,不公平。
rogwan
2018-05-05 14:27:17 +08:00
django 和 rails 以及 java 框架说明太肿才是大众需要的嘛
shellquery
2018-05-05 14:28:55 +08:00
@ipwx 感谢推荐
shellquery
2018-05-05 14:29:13 +08:00
@rogwan 这话我没法反驳
shellquery
2018-05-05 14:30:07 +08:00
@ipwx 在理
dobelee
2018-05-05 14:31:51 +08:00
说到 web 框架,php 是世界上最好的语言。
MeteorCat
2018-05-05 14:38:59 +08:00
@dobelee 哈哈哈,我就知道会有这个
lhx2008
2018-05-05 15:29:39 +08:00
java 没什么语法糖,spring 又自己造了大量轮子(光是解析 xml 都不知道多少行),基本没什么依赖
要是 js 的框架把依赖包的行数算上,恐怕是几百万行吧。。。[滑稽]
tabris17
2018-05-05 15:33:09 +08:00
不看依赖统计行数就是耍流氓
sagaxu
2018-05-05 15:33:12 +08:00
行数=功能*语言啰嗦程度
chinafu
2018-05-05 15:33:28 +08:00
php 是世界上最好的语言...................哈哈哈,我就知道会有这个
icy37785
2018-05-05 15:35:15 +08:00
为什么主流语言,web 框架这两个关键字下看不到我们全宇宙最好的语言 PHP。。。这不是我大 PHP 的主战场么。。。
LeungJZ
2018-05-05 15:40:05 +08:00
为啥没有 PHP ?
JS 如果算上 node_modules 估计有 100w 行吧。
linxl
2018-05-05 15:43:52 +08:00
这是不算上它的扩展包吗?
zn
2018-05-05 15:44:04 +08:00
这个不能简单评判的,不能说代码简洁就是好,也不能说代码多就厉害。

代码少可能是简洁高效了,然而代码少意味着功能肯定少,后果就是要做一个东西往往要每个轮子都要自己造,累还不说,代码质量比成熟框架差远了,各种 bug 和漏洞不要太多。。。。。
fork3rt
2018-05-05 15:51:06 +08:00
没有 PHP 叫什么 Web, LOL
e9e499d78f
2018-05-05 15:57:36 +08:00
测试写得多岂不是很吃亏
Kilerd
2018-05-05 16:00:28 +08:00
go 有一个很完善的 net/http,node 有一个 http

这能比? KOA 真正核心的代码,即便算上 koa-compose 也不到几百行。
python 不用 wsgi,自己写一个 HTTP 解析库都几千行了。

无谓的 benchmark,没意义

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

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

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

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

© 2021 V2EX