Django -vs- Grails -vs-?
-
09-06-2019 - |
题
我想知道是否有类似 Django 的简单 Web 应用程序开发与良好的部署、调试和其他工具相结合?
Django 是一个非常高效的框架,用于构建内容丰富的网站;与 Java 中的一些怪物相比,这是我尝试过的最好的,呼吸新鲜空气。然而它是用 Python 编写的,这意味着在部署/打包、调试、分析器和其他工具方面几乎没有真正的支持,而这些工具使构建和维护应用程序变得更加容易。
Ruby 也有类似的问题,尽管我确实喜欢 Ruby 很多 比我更喜欢 Python,我的印象是,在管理/支持应用程序方面,Rails 与 Django 大致相同。
这里有人尝试过 Django 和 Grails (或其他 Web 框架)来完成重要的项目吗?他们比较如何?
解决方案
您要求找一个同时使用 Grails 和 Django 的人。我已经为大型项目完成了这两个工作。这是我的想法:
IDE 的:Django 在 Eclipse 中运行得非常好,Grails 在 IntelliJ Idea 中运行得非常好。
调试:几乎相同(假设您使用 IntelliJ for Grails,使用 Eclipse for Python)。步骤调试、检查变量等...两者都不需要打印语句。有时 django 错误消息可能毫无用处,但 Grails 错误消息通常相当冗长且难以解析。
运行单元测试的时间:姜戈:2秒。圣杯:20 秒(测试本身都在不到一秒的时间内运行,剩下的就是加载框架来运行它们的部分......正如您所看到的,Grails 的加载速度慢得令人沮丧)。
部署:姜戈:将一个文件复制并粘贴到 apache 配置中,要重新部署,只需更改代码并重新加载 apache。圣杯:创建一个 .war 文件,将其部署到 tomcat 上,冲洗并重复以重新部署。
编程语言:Groovy 太棒了。我喜欢它,胜过喜欢 Python。但我当然没有任何抱怨。
插件:圣杯:很多损坏的插件(并且可以使用每个 java 库)。姜戈:一些稳定的插件,但足以满足您的大部分需求。
数据库:姜戈:模式迁移使用南,并且通常具有直观的关系。圣杯:没有架构迁移,默认情况下它会在启动时删除数据库...搞什么鬼
用法:姜戈:初创公司(特别是在 Gov 2.0 领域)、独立网络开发商店。圣杯:企业
希望有帮助!
其他提示
但是,它是用Python编写的,这意味着在部署/包装,调试,探险仪和其他工具的方式上几乎没有真正的支持,这些工具和其他工具使建筑和维护应用程序变得更加容易。
Python 有:
所以恕我直言,你不应该担心这些事情,使用 Python 和 Django 并快乐地生活:-)
你很幸运,最新版本 Django 在 Jython 上运行, ,因此您无需放弃整个 Java 生态系统。
说到框架,我今年的评价是:
这些框架的功能都无法与 Django 或 Ruby on Rails 相媲美。根据我同事的意见我可以推荐你 小花 框架。缺点是,它是用 PHP 编写的,据我所知,PHP 没有用于调试、分析和打包应用程序的出色工具。
编辑: 这里有一个非常好的 关于Python应用程序的打包和部署的文章 (特别是 Django 应用程序)。这是现在 Django 社区的热门话题。
该声明称 grails 在启动时删除数据库 是完全错误的。它的启动行为是完全可配置的并且易于配置。在开发模式下运行应用程序时,我通常使用 create-drop 。我在测试和生产中运行时使用更新。
我还喜欢引导处理,它让我可以在 Grails 中按环境预先配置测试用户、数据等。
我很高兴看到真正构建和部署了一些商业项目的人对利弊发表评论。读起来非常有趣。
圣杯。
Grails看起来很像Rails(Ruby),但它使用比java更简单的groovy。它使用java技术,你可以毫无困难地使用任何java库。
我还选择 Grails 而不是简单性,并且有很多 java 库(例如 jasper report、jawr 等),我很高兴现在它们与 SpringSource 结合,这使得它们的基础更加坚实。
我有两个朋友最初开始使用 Ruby on Rails 编写应用程序,但遇到了许多问题和限制。经过大约 8 周的研究后,他们决定研究其他替代方案。
他们决定 催化剂框架, 和 Perl。那是大约 4 个月前的事了,他们反复谈论应用程序进展得有多好,以及他们的灵活性有多大。
使用 Perl,您可以使用所有 CPAN,以及其中包含的大量工具。我建议至少看一下。
对于 Python 来说,“良好的部署”问题并不像对于 Java 那样具有深刻的意义。
Django 的 Python 部署基本上就是“移动文件”。如果需要,您可以直接从 subversion trunk 目录运行。
您可以毫不费力地使用 Python 迪斯图尔斯 并为自己构建一个分发工具包,将 Django 应用程序放入 Python 的站点包中。我不太喜欢它,但它确实很容易做到。
因为我的东西在 Linux 中运行,所以我有简单的“install.py”脚本,可以将东西从 Subversion 目录移到 /opt/this
和 /opt/that
目录。我在 Apache 配置中使用显式路径设置来命名应用程序所在的目录。
可以通过就地编辑文件来完成修补。(一个糟糕的策略。)我更喜欢在 SVN 位置进行编辑并重新运行我的小安装,以确保我确实控制了所有文件。
cakephp.org
Cakephp 非常好,非常接近 ruby on Rails (1.2)。它采用 PHP 语言,在共享主机上运行良好,并且易于实现。
唯一的缺点是文档有些缺乏,但你很快就能得到它并很快开始做很酷的事情。
我完全推荐cakephp。
就我个人而言,我用 Django 做了一些相当大的项目,但我只能与所说的“怪物”(Spring、EJB)和真正低级的东西(如 Twisted)进行比较。
使用解释性语言的 Web 框架大多还处于起步阶段,所有这些框架(即积极维护的框架)都在日益完善。
通过“良好的部署”,您是否将其与 Java 的 EAR 文件进行比较?Java 的 EAR 文件允许您通过将单个文件上传到 J2EE 服务器来部署 Web 应用程序?(以及,在较小程度上,WAR 文件;EAR 文件可以有依赖项目的 WAR 文件)
我认为 Django 或 Rails 还没有达到这一点,但我可能是错的......zuber指出了一篇文章,其中Python方面有更多细节。
卡皮斯特拉诺 可能会在 Ruby 方面有所帮助。
不幸的是,我并没有真正使用 Python 或 Ruby 那么多,所以我无法在分析器或调试器方面提供帮助。