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

9055 次点击
所在节点    程序员
52 条回复
prolic
2018-05-05 16:20:52 +08:00
别跨语言看,看看同种语言内各个框架的差异,不同语言基础库差异是巨大的
wellsc
2018-05-05 16:26:57 +08:00
cloc 了解一下
zjsxwc
2018-05-05 16:29:37 +08:00
最好的 web 开发语言 PHP 已经不懈与比较了 2333
Zh1
2018-05-05 16:39:38 +08:00
竟然没有 PHP
agagega
2018-05-05 16:54:19 +08:00
且不论楼主的标准是否客观。Rails 作者说得好,很多时候所谓的精简意味着你想要某个功能的时候还得去从一堆库中选择一个,集成得还不一定好,到头来可能变得更臃肿。
xiongshengyao
2018-05-05 17:02:29 +08:00
介个…… flask 是依赖 werkzeug 的吧
learnshare
2018-05-05 17:02:58 +08:00
看行数意义不大,要看功能、易用性和扩展性,性能都不是主要的关注点
cheesea
2018-05-05 17:19:27 +08:00
还是去掉注释再计算吧,有些框架注释比代码还多,直接是把文档包含在代码里面了。
cheesea
2018-05-05 17:20:52 +08:00
而且像 flask 其实代码只有不到 3000 行,但是它严重依赖于 werkzeug,直接统计 flask 行数,其实没什么意义。
shellquery
2018-05-05 17:27:11 +08:00
@cheesea 你们就不能明白作者为什么要把 werkzeug 也列进去的原因么,而且还故意和 flask 放在一起
TomorJM
2018-05-05 17:33:08 +08:00
毫无意义~
Jackeriss
2018-05-05 17:38:26 +08:00
好大一颗红宝石!
ccino
2018-05-05 17:42:31 +08:00
好大一个娃娃~~
sonyxperia
2018-05-05 19:45:49 +08:00
就知道 Java 又中枪了……
xAx
2018-05-05 20:09:04 +08:00
来来来,来个会吹牛的给我解释下,我那一个加上图片才 3M 大的小项目,那几百兆的 node_modules 里是什么。你跟我说我用的框架就几千行代码?

照这么算,我能写出一个没有代码的 java 框架,一个 pom.xml 就行了。

不能这么算代码行数吧?
miketeam
2018-05-05 20:34:33 +08:00
又引起语言之针(^^)。 不说了,万能的 php,没有之一
janus77
2018-05-05 20:45:26 +08:00
语言之间比行数并没有什么卵用,谁都知道 java 写法不简洁…
还是语言内部比吧
btw,ruby 可以算主流么…
orangeade
2018-05-05 20:54:04 +08:00
django, tornado 都和 Facebook 有关系,有意思
88250
2018-05-05 20:57:16 +08:00
golang 换 logo 了....
murmur
2018-05-05 21:46:06 +08:00
js 没依赖多少代码但是你发现 node_modules 里有一百来个包。。。

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

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

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

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

© 2021 V2EX