用于在线web编程的php替代方案?

用于在线web编程的php替代方案?,php,python,ruby,web-applications,Php,Python,Ruby,Web Applications,不久前,我第一次用php学习web编程。它有一些我觉得非常有用的特性,但总体上我并不喜欢它,只是出于个人喜好。我想知道我可以使用什么替代方案来使用不同的底层编程语言(Python?Ruby?)提供类似的功能 我要找的是: 通用编程能力 内嵌在HTML中的在线服务器端代码(即,如果需要,我希望能够使我的文档成为纯HTML,而不是要求特殊语法,即使在我不需要动态内容的地方) 访问请求参数 能够发送标题、设置cookie等 最好: 不需要单独的服务器进程 易于与Apache连接 有人有什么建议

不久前,我第一次用php学习web编程。它有一些我觉得非常有用的特性,但总体上我并不喜欢它,只是出于个人喜好。我想知道我可以使用什么替代方案来使用不同的底层编程语言(Python?Ruby?)提供类似的功能

我要找的是:

  • 通用编程能力
  • 内嵌在HTML中的在线服务器端代码(即,如果需要,我希望能够使我的文档成为纯HTML,而不是要求特殊语法,即使在我不需要动态内容的地方)
  • 访问请求参数
  • 能够发送标题、设置cookie等
最好:

  • 不需要单独的服务器进程
  • 易于与Apache连接
有人有什么建议吗

我尝试做的一件事是通过CGI嵌入Ruby(erb)。这看起来很适合写在纸上。不幸的是,我没能让它发挥作用,因为我遵循了一些不同的指南,而将它们结合起来的结果并没有起作用。无论如何,这似乎不允许我设置任意标题(更重要的是,使用会话和cookie)

注意:我目前并不寻找一个完整的web框架。在其他HTML页面中,只有相对少量的动态内容


谢谢

您已经找到了PHP如此流行的一个重要原因——它将所有这些内容都放在了一个可嵌入服务器的包中。没有多少解决方案具有部署的便利性;PHP是专门为您想要的东西编写的,这是它的优点和缺点。这就是为什么它是一种如此弱的通用语言,也是为什么每个人和他们的狗都知道它。它无处不在,进入门槛几乎为零

PHP是一种语言,加上模板,再加上一个web框架,所有这些都放在一个包中。要获得一个等价物,您需要一个web框架,即使它很小。在Ruby中类似的操作是一种超轻量级的方法,尽管它需要一个单独的服务器进程

您可以通过cgi.pm查看类似Perl的内容,但是如果您想要比PHP更干净的内容,那么这可能是朝着错误方向迈出的一步

我不太了解Python包,因此无法提供建议,但Twisted使将Python程序绑定到web界面变得很容易。不过,它最终会在自己的服务器进程中运行


你需要做一些比你的PHP部署更高的工作,如果你想使用除了PHP之外的东西,但这通常是人们认为在生产率上合理的折衷选择。

Python是一个很好的Web框架:它符合你的要求,易于学习,并能优雅地缩放。浏览教程以查看

我有三个建议

第一个是Ruby on Rails,一旦你进入它,它会非常有趣。。我建议大家浏览一下Rails for Zombies,大致了解一下您是否喜欢它

免费安装和运行一些东西真的很容易,所以你不必花任何钱在网上安装东西

我的第二个建议是我正在尝试的Node.js。我建议观看此视频,了解其内容:

如果你对Javascript感兴趣,我想你会马上得到它。您还可以构建一个开放源代码的Node.js项目,它也非常漂亮

如果你喜欢学习Java,第三个方法是“玩”。这方面的一个很酷的视频是:


我没怎么用过这个,但它在我的“待办事项”清单上。总的来说,我建议你在一堆不同的框架中浸泡一下,了解它们是如何工作的,然后你自然会去追求对你来说最有意义的东西。祝你好运

考虑到你的要求

在其他HTML页面中,只有相对少量的动态内容

那么,PHP将很难被打败,因为它运行速度快,而且学习开销最小。它避免了所有CGI问题,否则您将不得不处理这些问题,实际上它是自己的模板语言。这就是为什么这么多人开始使用它。一旦您完成了将一点编程逻辑混合到HTML页面中,并开发出更灵活、可维护和可测试的应用程序的目标,那么Rails、Django等框架将值得您花时间学习。

使用符合您的标准,但需要注意的是:不要使用嵌入HTML中的内联代码,在称为s表达式的HTML的Lisp-ish表示中嵌入了内联代码。(HTML和s-exp之间有一对一的对应关系;它们可以通过一个函数调用进行相互转换。)因此,页面的静态部分和代码共享相同的语法——我非常喜欢Scheme

> (sxml->xml `(div (p "It's been: " (i ,(current-time)) " seconds")))

<div>
  <p>
     It's been: <i>1339772791</i> seconds
  </p>
</div>
>(sxml->xml`(div(p)它一直是:“(i,(当前时间))“秒”))

时间:1339772791秒


这是一个非常棘手的问题。为什么不试试Python、Ruby或JavaScript(节点)或@马特波尔:当然,我想换一种语言。问题是:我如何以最小的努力做到这一点,以便它像php那样无缝地在线集成?