1

免责声明:这个问题有点开放式。我还希望回复部分基于开发人员的偏好。

我最近一直在对 Express.js(通过 Node.js 耦合)进行一些研究,我正在努力寻找如何将这些技术中的任何一种融入我当前的网站开发工作流程中。最近我一直在使用 Wordpress 或 Ruby on Rails,前者将在 Apache 上运行,后者将在它自己的专有服务器上运行(我假设)。

现在也许我只是不理解某些东西,但是我看不到争取基于 Javascript 的框架/服务器的支持的优势。如果将这部分作为我的工作流程有明显的优势,它们会是什么?我还没有找到任何方法来适应(比如说)Rails 应用程序或 Wordpress 站点。有人可以为我指出在我已经使用的技术之上实施这些技术的更好帮助的方向吗?

最后一个问题,如果有人在他们的浏览器中禁用了 Javascript,会发生什么?基于 Javascript 的服务器将如何反应(如果有的话)?

4

2 回答 2

3

有两个很大的区别:

事件循环

Node.js 与通常的 Apache 概念有点不同,因为它处理连接的方式。Node 没有同步连接,而是使用事件循环来进行非阻塞操作。请注意,这不是 Javascript 独有的,还有基于 C 和 Python 的框架也支持类似的事件循环方法,但是在 Javascript 中,这可能是最自然的感觉,因为这就是自引入以来 JS 的工作方式。

据说,这应该使您能够处理更多并发客户端。但是,它没有像常规阻塞解决方案那样在现实世界中暴露那么多,因此这种方法不像大多数当前实现那样成熟。实际的性能差异值得怀疑,因为它取决于应用程序的确切要求。

代码共享

这一点与之前的区别相比争议要小得多,但本质上如果您在客户端和服务器上使用相同的语言,您可以重用大量代码,而不必用多种语言重写您的数据结构等,为您节省大量开发时间。但是,你要明白服务器端 JS 的概念和你在浏览器上所知道的不同,比如你没有 jQuery 或 Prototype 的动态 JS,但它的结果和用例更类似于 PHP被广泛用于。

于 2012-06-01T20:03:23.120 回答
1

使用 Javascript 作为服务器端语言的主要优点是您可以用一种语言编写整个系统。

这在以下方面具有优势:

  • 开发人员的学习曲线和心理上下文切换
  • 并且还为在两个环境之间共享代码提供了一些可能性。

但是,由于多种原因,最后一点没有听起来那么有用,这就是缺点所在:

  • 由于两个环境实际执行的操作不同,实际上无法共享太多代码。也许是一些验证代码,所以您知道您正在对客户端和服务器进行相同的检查,也许还有一些实用功能,但仅此而已。
  • 您使用的库在两者之间也将完全不同:jQuery 仅适用于客户端,而 Node 具有特定于服务器的库。
  • 所以作为一个开发者,你还是需要在不同环境之间进行心理上下文切换,因为两个环境是不同的。他们可能共享一种语言,但他们的运作方式不同,他们所做的事情也不同。事实上,在两者之间共享语言实际上会使上下文切换变得更加困难,这可能会导致错误。
  • 最后,值得牢记的是,虽然 Node 得到了开发者社区的大量关注,但它仍然是新事物并且发展迅速:如果您是一家考虑将它作为开发平台的企业,它可能还不够稳定立足于重大项目。
于 2012-06-01T20:18:56.850 回答