2008-10-06 48 views
6

每当我看到Ruby或Python在Web开发的上下文中讨论时,总会有一个框架(Rails for Ruby,Django for Python)。这些框架是否必要?如果没有,那么为什么这些语言经常在框架内使用,而Perl和PHP不是这样吗?你需要一个框架来为Web编写Ruby或Python代码吗?

+2

哇......很多很好的答案,很难选择一个“接受”,所以我选择了一个足够全面的答案来回答这个问题,并且足以解决我提到的所有语言。感谢大家! – 2008-10-06 16:28:33

回答

3

简短的回答是不,他们没有必要。在ruby中,您有.erb模板,可以使用与您使用PHP页面相似的方式。您可以使用多种技术(Rails-like框架,模板甚至直接与HTTP库交谈并构建页面CGI风格)以ruby或Python编写网站。

像Python的Django或Ruby's Rails这样的Web框架(有很多)只是提高了PHP或ASP的抽象级别,并且自动化了几个过程(如登录,数据库交互,REST API),这总是一件好事。

4

我只能对Ruby说话 - 但是,不,您不需要一个框架来在Web上运行基于Ruby的页面。你确实需要一个支持ruby的服务器,例如运行eruby/erb的Apache。但是,一旦你这样做了,你就可以像创建RoR一样创建.rhtml文件,在那里它处理内嵌的ruby代码。

3

“极品”是一个强词。你当然可以写一个Python,但我不想。

Python并没有被设计成像直接的Web脚本语言那样,所以像连接数据库这样常见的web-ish事物并不是原生的,而且框架非常方便。

编辑:mod_python存在Apache,所以如果你只是想写一些脚本,那么Python不需要框架。如果你想建立一个完整的网站,我建议使用一个。

0

绝对不是那些需要的开发框架。但是与大多数开发环境一样,如果您有支持的框架来引用和构建应用程序,那么您的生产力将呈指数级增长。如果他们已经对您使用的框架有了核心理解,它还会减少需要让其他人加快应用程序的培训。

0

任何可以“打印”的语言都可以用来生成网页,但框架可以为您处理大量的HTML代。它们让您更专注于内容,更少关注编码原始HTML的细节。

0

对于python,答案是否定的,你不需要。你可以很容易地在你的web服务器后面直接编写python,看看mod_python如何做到这一点。

很多人喜欢框架,因为它们以可靠的形式提供了大量的样板代码,所以您不必亲自编写代码。但是,像任何代码项目一样,您应该根据自己的问题选择工具和框架。

0

你当然可以用任何一种语言编写CGI脚本,并且做一些“原始”的事情。

框架(理想情况下)节省了为其他人已经处理的事情(会话处理等)编写一堆代码的麻烦。

这个决定可能归结为你需要做的事情。如果框架具有您需要的功能,为什么不使用它。如果框架需要大量修改,那么推出自己的东西可能会更容易。或者查看一个不同的框架。

Python库有这样做的CGI众多模块,解析HTML,饼干,WSGI等:

http://docs.python.org/library/index.html

1

至于为什么

最合理的事情,我能想到的Perl和PHP是在Web应用程序的框架变得流行之前开发的。因此,“旧”的做事方式一直存在于这些文化中。在框架变得流行后,Ruby和Python变得流行,因此它们一起发展起来。如果你的语言有一个良好的社区支持的框架(或多个),没有太多的理由尝试编写一个Web应用程序没有一个。

1

框架本身并不是必需的,但它确实可以加速开发并帮助您编写“更好”的代码。在PHP中,肯定有框架可以像CakePHP一样使用,在Perl中也有很多,如MasonCatalyst

1

框架是没有必要的。然而,很多开发人员认为框架通过自动化很多事情来缓解开发。例如,Django将根据您的数据库结构为您创建一个适用于生产的后端。它也可以让你整合各种插件,如果你选择。我不太了解Rails或Perl框架,但PHP框架(如Zend,Symfony,Code Igniter,CakePHP等)被广泛使用。

我在我们工作的地方推出了我们自己的PHP框架。

2

框架?哎呀,如果你使用Python,你甚至不需要Web服务器,你可以在三行代码中创建一个。

0

PHP有很多框架。可能多于大多数。在Ruby中,大多数情况下使用Rails,因此您所听到的,以及Django for Python被提及的更多。 但是用PHP你有很多选择。

List of web application frameworks

3

从一个Python的点,你绝对要使用的框架之一。是的,也许可以在没有它们的情况下编写一个Web应用程序,但它不会很漂亮。以下是您(可能)结束了从头开始编写的几件事情:

  • 模板:除非你写一个非常非常快的黑客,你不希望被产生内所有的HTML的你Python代码 - 这是一个非常糟糕的设计,成为可维护性的噩梦。

  • URL处理:拆分URL并标识要运行的代码不是一项简单的任务。 Django(例如)提供了一个绝妙的机制,可以从一组正则表达式映射到一组视图函数。

  • 验证:滚动自己的登录/注销/会话管理代码是一种痛苦,尤其是当有已经预先写好的(和测试)提供代码

  • 错误处理:框架已经到位了良好的机制到a)帮助您调试您的应用程序,并b)帮助重定向到正确的404和500页面。

为了补充说明,所有框架库都经过严格测试(并经过防火测试)。此外,还有一些人正在开发使用相同代码库的社区,所以如果您有任何问题,您可能会找到帮助。总之,你不必这样做,但是除非你的项目是“一个新的Web框架”,否则你最好使用其中一个现有的框架。

+0

您当然可以使用单独的无关的库模块完成所有这些任务;您不一定必须使用总体框架来控制该地块。较低级别的WSGI标准使我们足以将这些组件粘合在一起。 – bobince 2008-11-10 13:40:43

1

这些框架是必需的吗?

不,他们像任何'框架'一样,只是为了加快开发时间,让程序员的工作更轻松。

如果不是,那么这些语言经常在框架内使用,而Perl和PHP不是这样吗?

在使用框架的想法之前,PHP和Perl是构建Web站点的流行语言。像Rails这样的框架是Ruby给予的。我不确定Python或Ruby在被框架支持之前是否像Web语言那样常见。

现在,甚至PHP/Perl Web开发应该由一个框架(现在有很多)支持。

相关问题