与非Javascript服务器相比,使用基于Javascript的服务器有哪些优势

What are some advantages to using a Javascript-based server over a non-Javascript server?

本文关键字:Javascript 服务器 与非      更新时间:2023-09-26

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

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

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

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

有两个很大的区别:

事件循环

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

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

代码共享

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

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

这在以下方面具有优势:

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

然而,由于多种原因,最后一点并不像听起来那么有用,这就是缺点所在:

  • 实际上可以共享的代码并不多,因为两个环境实际执行的操作存在差异。也许是一些验证代码,所以你知道你正在对客户端和服务器执行相同的检查,也许还有一些实用程序函数,但仅此而已。
  • 你使用的库在两者之间也将完全不同:jQuery只在客户端上工作,而Node有特定于服务器的库。
  • 因此,作为开发人员,您仍然需要在心理上在环境之间切换上下文,因为两个环境是不同的。他们可能共享一种语言,但他们的操作模式不同,他们所做的也不同。事实上,在两者之间共享语言实际上会使上下文切换变得更加困难,这可能会导致错误。
  • 最后,值得记住的是,虽然 Node 得到了开发者社区的大量关注,但它仍然是新的并且发展迅速:如果你是一家考虑将其作为开发平台的企业,它可能还不够稳定,无法建立一个主要项目。