
统计的时候我发现有些框架的代码比我想象的大的太多,所以我对这些代码量大的代码进行了反复统计,去掉路径包含 test/example/benchmark/vendor 等的代码,进行 wc -l 汇聚得到的最终结果。
这样直接对比对某些框架来说是不公平的。有些框架注释比较多,有些框架几乎没有注释。我的统计方法里面没有把注释去掉。不过注释并不是最重要的区别,最大的区别在于有些框架是微内核,有些框架是 full-stack 的。fullstack 的框架可以直接拿来即用,而微内核一般还需要引入额外的插件和扩展才能达到相似的效果。
从源码学习角度来说,自然还是应该选择微内核的,代码量大了阅读起来会是一头雾水。微内核短小精悍,浓缩的都是精华。
最后请允许我同情一下 Java 程序员,表示他们真得很幸苦。
1 ofooo 2018 年 5 月 5 日 python 比 go 差好多啊~~~ |
2 ioth 2018 年 5 月 5 日 有钱人住别墅,没钱人住单间。 搞 java 的人都特别有钱。 |
3 ipwx 2018 年 5 月 5 日 1、统计代码请用 cloc 2、Flask 依赖 werkzeug,只看 Flask 的行数,和其他对比的话,不公平。 |
4 rogwan 2018 年 5 月 5 日 via Android django 和 rails 以及 java 框架说明太肿才是大众需要的嘛 |
5 shellquery OP @ipwx 感谢推荐 |
6 shellquery OP @rogwan 这话我没法反驳 |
7 shellquery OP @ipwx 在理 |
8 dobelee 2018 年 5 月 5 日 via Android 说到 web 框架,php 是世界上最好的语言。 |
10 lhx2008 2018 年 5 月 5 日 via Android java 没什么语法糖,spring 又自己造了大量轮子(光是解析 xml 都不知道多少行),基本没什么依赖 要是 js 的框架把依赖包的行数算上,恐怕是几百万行吧。。。[滑稽] |
11 tabris17 2018 年 5 月 5 日 不看依赖统计行数就是耍流氓 |
12 sagaxu 2018 年 5 月 5 日 via Android 行数=功能*语言嗦程度 |
13 chinafu 2018 年 5 月 5 日 php 是世界上最好的语言...................哈哈哈,我就知道会有这个 |
14 icy37785 2018 年 5 月 5 日 via iPhone 为什么主流语言,web 框架这两个关键字下看不到我们全宇宙最好的语言 PHP。。。这不是我大 PHP 的主战场么。。。 |
15 LeungJZ 2018 年 5 月 5 日 为啥没有 PHP ? JS 如果算上 node_modules 估计有 100w 行吧。 |
16 lazypu 2018 年 5 月 5 日 这是不算上它的扩展包吗? |
17 zn 2018 年 5 月 5 日 这个不能简单评判的,不能说代码简洁就是好,也不能说代码多就厉害。 代码少可能是简洁高效了,然而代码少意味着功能肯定少,后果就是要做一个东西往往要每个轮子都要自己造,累还不说,代码质量比成熟框架差远了,各种 bug 和漏洞不要太多。。。。。 |
18 fork3rt 2018 年 5 月 5 日 via Android 没有 PHP 叫什么 Web, LOL |
19 e9e499d78f 2018 年 5 月 5 日 测试写得多岂不是很吃亏 |
20 Kilerd 2018 年 5 月 5 日 go 有一个很完善的 net/http,node 有一个 http 这能比? KOA 真正核心的代码,即便算上 koa-compose 也不到几百行。 python 不用 wsgi,自己写一个 HTTP 解析库都几千行了。 无谓的 benchmark,没意义 |
21 prolic 2018 年 5 月 5 日 via Android 别跨语言看,看看同种语言内各个框架的差异,不同语言基础库差异是巨大的 |
22 wellsc 2018 年 5 月 5 日 cloc 了解一下 |
23 zjsxwc 2018 年 5 月 5 日 via Android 最好的 web 开发语言 PHP 已经不懈与比较了 2333 |
24 Zh1 2018 年 5 月 5 日 竟然没有 PHP |
25 agagega 2018 年 5 月 5 日 via iPhone 且不论楼主的标准是否客观。Rails 作者说得好,很多时候所谓的精简意味着你想要某个功能的时候还得去从一堆库中选择一个,集成得还不一定好,到头来可能变得更臃肿。 |
26 xiongshengyao 2018 年 5 月 5 日 介个…… flask 是依赖 werkzeug 的吧 |
27 learnshare 2018 年 5 月 5 日 看行数意义不大,要看功能、易用性和扩展性,性能都不是主要的关注点 |
28 cheesea 2018 年 5 月 5 日 还是去掉注释再计算吧,有些框架注释比代码还多,直接是把文档包含在代码里面了。 |
29 cheesea 2018 年 5 月 5 日 而且像 flask 其实代码只有不到 3000 行,但是它严重依赖于 werkzeug,直接统计 flask 行数,其实没什么意义。 |
30 shellquery OP @cheesea 你们就不能明白作者为什么要把 werkzeug 也列进去的原因么,而且还故意和 flask 放在一起 |
31 TomorJM 2018 年 5 月 5 日 毫无意义~ |
32 Jackeriss 2018 年 5 月 5 日 好大一颗红宝石! |
33 ccino 2018 年 5 月 5 日 好大一个娃娃~~ |
34 sonyxperia 2018 年 5 月 5 日 就知道 Java 又中枪了…… |
35 xAx 2018 年 5 月 5 日 来来来,来个会吹牛的给我解释下,我那一个加上图片才 3M 大的小项目,那几百兆的 node_modules 里是什么。你跟我说我用的框架就几千行代码? 照这么算,我能写出一个没有代码的 java 框架,一个 pom.xml 就行了。 不能这么算代码行数吧? |
36 miketeam 2018 年 5 月 5 日 via iPhone 又引起语言之针(^^)。 不说了,万能的 php,没有之一 |
37 rb6221 2018 年 5 月 5 日 via Android 语言之间比行数并没有什么卵用,谁都知道 java 写法不简洁… 还是语言内部比吧 btw,ruby 可以算主流么… |
38 orangeade 2018 年 5 月 5 日 via Android django, tornado 都和 Facebook 有关系,有意思 |
39 88250 2018 年 5 月 5 日 golang 换 logo 了.... |
40 murmur 2018 年 5 月 5 日 js 没依赖多少代码但是你发现 node_modules 里有一百来个包。。。 |
42 ethusdt 2018 年 5 月 5 日 via iPhone react 呢? |
43 shellquery OP @FaiChou react 是客户端,这里怼的是服务端 |
44 shellquery OP @murmur 你说的是 dev 依赖,不考虑 dev 依赖,一个纯粹的 web 服务器也会有很多依赖包,但是不至于 100 来个 |
45 murmur 2018 年 5 月 5 日 @shellquery dev 依赖咋就不算依赖了呢 按你这么算 java 打出来就一个 war 包呢 |
46 shellquery OP @murmur dev 依赖是可选依赖,你完全可以不使用 dev 依赖 |
47 ylcc 2018 年 5 月 5 日 tornado 不只是是一个 web 框架,里面还实现了自己的异步网络库,感觉不能这么跟 flask 比较。。。ps:行数的比较似乎不是很有意义 |
48 conn4575 2018 年 5 月 6 日 via Android 突然觉得 tornado 真是不简单,和 werkzeug+flask 差不多的代码量,功能比后者多了许多,还包括自己实现了 asyncio,web 框架源码学习的典范! |
49 swat199538 2018 年 5 月 6 日 web 方面居然没有 PHP ? |
50 faywong8888 2018 年 5 月 6 日 via Android 竟然没有 lisp/clojure ? |
51 shellic 2018 年 5 月 6 日 via Android PHP 表示不服 |
52 KgM4gLtF0shViDH3 2018 年 6 月 11 日 web 框架没有 PHP 的是几个意思 |