【发布时间】:2011-05-15 15:24:13
【问题描述】:
我使用 PHP 已经有一段时间了。我一直在考虑学习 Node.js 以配合它使用非阻塞思想来创建在线游戏或应用程序。有很多关于将两者结合使用的信息。使用 Node 作为游戏后端的一部分确实可以加速游戏的某些方面,特别是如果游戏允许用户实时对战。
嗯,最近我也一直在研究学习 Python(是的,我手头有很多时间)。 PHP 有很多我非常喜欢的特性。但是对于使用 Node.js 来做后台工作,就像我正在考虑使用 PHP 一样,我根本找不到太多信息。我还注意到 Python 确实有一些线程特性。由于我对 Python 的世界还很陌生,我什至需要 Python 中的 Node.js 吗? Python 可以处理 Node.js 可以处理的这些特性吗?或者使用 Node 是否还有好处,或者我真的需要它。
附带说明一下,自从我开始查找 Python 以来,我还发现了 Twisted,它似乎是另一个框架,如 Node.js。但是 Twisted 是用 Python 编写的。因此,在上述任何一种情况下,Twisted 都会更好(除了 Twisted 似乎已经存在的时间更长并且比 Node 更稳定的事实)。我的意思是总的来说它值得使用,无论是 Node 还是 Twisted?如果是这样,使用 Python 是否比另一个更好?
很抱歉这个大问题,但我在这方面非常不确定和 n00b。谢谢。
就目前而言,在阅读了有用的答案后,我看到了以下选项:
- PHP + JS
- Python + Twisted
- Python + PyJamas
- Python + Node.js
- Node.js
- 扭曲
我已经了解 PHP 并且对它很熟悉,目前正在学习 JS。这对我来说是一条主要的可能路线。但我也从 PHP 转向 Python,因为我喜欢这门语言的一般特性。
我认为这个选项可能比 #3 更合理,使用 Twisted 处理网络端口,让玩家可以互相直播。
这只是让您不必学习 JS,在我看来这没什么大不了的。我已经开始研究它了,它并不难学。但是就像在一个问题中提到的那样,混合了 ;并且 {} 可能存在一些问题。
与 #2 类似,但使用的是 Node.js。大多数情况下,我看到添加 Node 来处理网络方面,让玩家能够在现场/实时游戏中玩。而且大部分代码都在 Python 中。
-
Sole Node.js 是一个考虑因素,因为它是单一语言路线。但它也没有学习和使用 Python 的相同好处(它是一种通用的脚本语言,我可以在网页设计内外使用。我想学习和使用它的一个重要原因。
Ans as #5 但在阅读 cmets 之前,我并没有考虑唯一的 Twisted 路线。虽然看起来很合理,但它并不真正涉及我想学习的两种语言中的一种,Python 和 Node。
以上似乎是我可以走的主要路线。现在我仍然不确定要走哪条路。我真的很想同时学习 Node 和 Python。所以看来我可能只需要分别学习这两个。但我仍然需要为这个项目选择一个选择。到目前为止,我喜欢数字 2 和 5,其中 6 接近 5,因为 Node 和 Twisted 有一些非常相似的功能。 1 作为提及,因为那是我已经知道的。但无论如何我都想学点新东西。所以,仍然是数字 2 和 5。或者 4,因为它类似于 2。哈,我仍然需要做一些功课。也许它值得另一个问题。
编辑(2012 年 9 月 19 日):我只是想更新一下,说我目前主要使用 Node.js 进行开发。并计划将 Redis 用于 PubSub 功能以提供实时页面更新的外观,因为我不需要像游戏或配对内容编辑那样的真正实时。
【问题讨论】:
-
您的第 6 点不正确:Twisted 是 Python。 Twisted 的重点在于公开与普通 Python API 一样多的事件驱动网络内容。
-
哦,好的。我知道了。我知道它是用 python 写的,但我想我对它的看法有点偏差。
-
值得注意的是,Python 是一门语言,Twisted 将 Python 扩展至网络,Node.js 将 Javascript 扩展至网络。就像您不能将 Ruby on Rails 与 PHP 一起使用(除非您想投入大量的工作来组合两个从未想过的组件),您不能将 Twisted 与 Node.js 一起使用,而且您可以不要将 Node.js 与 Python 一起使用。
标签: php python twisted node.js nonblocking