Rails与Django的最新推荐?

7 投票
4 回答
2002 浏览
提问于 2025-04-15 13:01

(免责声明:我昨天在Hacker News上问了这个问题。虽然得到了一些不错的回复,但技术讨论不够,更多的是“你应该用Rails,因为你熟悉它”。既然Joel和Jeff明确表示他们不介意其他网站的问题被重新发布……而且我真的很喜欢这里的回答……所以我就来这里问了)

我知道这篇文章是个臭名昭著的“对比”问题,可能和以前的帖子重复。不过,我发现关于Rails和Django的信息大多过时了,都是基于更早版本的框架,所以请多多包涵。

首先,我是个Rails的爱好者。我三年前接触它,真的很喜欢它带来的很多东西。我不仅仅是Ruby的使用者……我总共大约有11年的经验,包括Java、C/C++、Perl、Tcl、(一些)Python等等。

无论如何,我有一个我认为会改变世界的想法。我已经说服了一些人相信这一点,还有朋友和家人资助我,想尽快找一些外包开发者,把它做成测试版。

现在,我面临的选择是用什么技术。虽然我真的很喜欢Ruby……但我对它的“魔法”有点厌倦了,还有对开放类的滥用。虽然在需要快速注入一些功能时这很方便,但在维护项目或任何依赖的插件时,这就变得很麻烦了。我个人更喜欢Ruby而不是Python(主要是因为块的特性),但我很羡慕Python社区的清晰优先的态度。考虑到这些烦恼,我正在认真考虑深入学习Django,并在这个项目中使用它。

我认为Rails的优点有:

  1. 社区规模(不过,这个“社区”里有一些PHP的逃亡者,这不一定是个优点)
  2. 我对它的熟悉和经验
  3. 很多公司在使用它并努力改进
  4. 可以找到外包资源

Rails的缺点包括:

  1. 魔法太多
  2. 文档在某些地方依然很糟糕
  3. API不一致
  4. 我提到过魔法吗?

在Django方面的(看起来的)优点:

  1. 清晰
  2. 性能……我相信Unladen Swallow会真正改变Python的格局,给它带来竞争优势
  3. 谷歌对这门语言的支持(见第2点)

Django的缺点:

  1. 学习曲线
  2. 社区规模较小
  3. 项目本身的发展周期较慢?
  4. 外包资源的(不)可用性

所以,这就是我目前的思考过程。我觉得我可以很快上手Django,而且我脑海中还有一些Python的基础知识。但我想听听你们的意见,因为我非常尊重我在这里阅读的很多人的视野和经验。

谢谢你们的帮助。我真的认为这个想法会成功,所以做出正确的技术决策对我来说非常重要。

而且,仅仅因为我在Rails上有经验就选择它,这听起来并不对。如果真是这样,我现在还在用Perl或C呢。

谢谢!

4 个回答

6

我想对你们的一些说法提出不同的看法:

  • Django的“魔法”可能比Rails少,但还是有一些的。不过,Python的语法更清晰,所以你会更容易理解。
  • Django以易学著称,所以我觉得学习Django并不是个问题。
  • Unladen Swallow到现在为止还是个虚无缥缈的东西。绝对不要根据某个软件未来可能会出现的承诺来做软件选择。

既然你已经会Rails了,除非你知道换到其他框架会很痛苦,否则最好还是继续用它。如果你对Rails不满意,我建议你可以看看其他一些现有的Python框架教程,比如Turbogears 2、BFG和Grok。也许你会更喜欢一些不那么庞大或者更完整的框架,而不是Rails或Django。

http://bfg.repoze.org/ http://grok.zope.org/ http://turbogears.org/

7

你忘了提到Rails的一个优点——通过RSpec/Cucumber提高测试的可测试性。其实,主要的额外好处是敏捷测试社区对Ruby/Rails的关注。使用自然语言进行测试,应该能大大增强你从测试中推理的能力,并提高理解的效果。在某种程度上,这可以通过易于阅读的测试来弥补你所不喜欢的“魔法”。

除此之外,我建议你在花费朋友和家人钱的情况下,开始一个新项目可能不是学习新语言或框架的最佳时机。为什么要给已经充满风险的事情增加额外的风险呢?

8

[从HN重发,链接与问题相同,因为我想听听你的看法(你在HN上没有回复)和SO的反馈。]

我承认我有偏见,因为我经营一家Django开发公司。不过,我先来谈谈Django的一些缺点。

  1. 学习曲线: 这并不比其他框架更陡峭。而且文档非常优秀。(当我在评估时,文档是让我决定使用它的原因。)

  2. 社区规模较小: 这确实是事实。但一旦社区达到一定规模,规模的大小就不那么重要了。Django的社区远远超过这个规模。(例如:在IRC上,任何时候大约有200名开发者。谷歌小组有14000多用户。)

  3. 项目本身的开发周期较慢?: 为什么会这样?如果你能提供更多细节,我可以回答这个问题。

  4. 离岸资源的(不可)获取: 确实比Rails少,但也没有你想象的那么糟糕。这里有一个非常小的列表,http://uswaretech.com/blog/2009/03/web-development-companies...

话虽如此,考虑到你拥有的信息,在你的情况下我会选择Rails。即使你大部分工作想外包,你现有的Rails经验也会是一个巨大的优势,帮助你评估供应商,跟踪进度。

顺便提一下,Django不够成熟/社区规模小的说法被夸大了,这里有一些数据:

  1. 开发年限:ROR:5年/Django:5年
  2. 最大谷歌小组成员数:ROR 18000+/Django 14000+
  3. 当前IRC成员数:ROR 436/Django 401
  4. 提交到代码库的次数:ROR ?/Django 11000+

撰写回答