服务器端javascript的使用是否普遍?为什么要使用它来代替其他服务器端脚本?有没有比其他服务器端语言更好的特定用例?

另外,对于如何开始尝试它感到困惑,我在freeBSD上,我需要安装什么才能运行服务器端javascript?

最佳答案

它是这样的:

服务器很昂贵,但是用户可以在浏览器中免费获得处理时间。因此,与任何足以运行一个以上服务器的站点上的客户端代码相比,服务器端代码相对昂贵。但是,有些事情您不能遗忘给客户端,例如数据验证和检索。您希望在客户端上执行这些操作,因为这意味着对用户的响应时间更快,而您自己的服务器基础结构也更少,但是安全性和可访问性方面的问题意味着需要服务器端代码。

通常会发生两种情况。您必须编写服务器端逻辑,但是您也可以在JavaScript中编写相同的逻辑,以期为用户提供更快的响应并在某些情况下为服务器节省一些额外的工作。这对于验证代码特别有效;浏览器中的验证检查失败可以将整个HTTP请求/响应对保存在服务器上。

由于我们都是(大多数)程序员,所以我们应该立即发现新问题。开发两组相同逻辑的过程不仅涉及额外的工作,而且涉及维护逻辑的工作,平台产生的不可避免的错误无法很好地匹配,并且随着实现的发展而逐步引入的错误也随之而来。

输入服务器端JavaScript。想法是您可以编写一次代码,因此相同的代码可以同时在服务器和客户端上运行。这似乎可以解决大多数问题:您可以一次完成服务器和客户端逻辑的全部设置,没有任何漂移,也没有双重维护。当您的开发人员只需要一种服务器和客户端工作语言时,这也很好。

不幸的是,在现实世界中效果并不理想。问题有四个方面:

  • 页面的服务器 View 与页面的客户端 View 仍然非常不同。服务器需要能够执行诸如直接与数据库对话之类的事情,而这不应该通过浏览器来完成。浏览器需要执行诸如操作与服务器不匹配的DOM之类的操作。
  • 您无法控制客户端的javascript引擎,这意味着服务器代码和客户端代码之间仍然存在重要的语言差异。
  • 数据库通常是比Web服务器更大的瓶颈,因此节省下来的资源和提高的性能最终比预期的要少。
  • 虽然几乎每个人都了解一点javascript,但是没有多少开发人员真正了解和理解javascript。

  • 这些并不是完全可以解决的技术问题:您可以将服务器支持的语言限制为大多数浏览器都很好支持的javascript子集,提供可以了解此子集和服务器端扩展的IDE,并制定一些有关页面结构的规则以最大程度地减少DOM问题,并提供一些样板javascript包含在客户端上,以使平台更易于使用。结果是类似Aptana Studio/Jaxer或更新的Node.js之类的东西,可能非常不错。

    但是并不完美。我认为,有太多的陷阱和很少的兼容性问题才能使它真正发挥作用。最终,与开发人员相比,额外的服务器仍然便宜,并且大多数程序员使用javascript以外的工具都可以提高生产力。

    我真正想看到的是部分服务器端javascript。当请求页面或提交表单时,服务器平台确实会要求使用javascript进行验证,可能是作为Web服务器的插件,而该插件与其余部分完全独立,但是响应是使用您选择的平台构建的。

    10-06 04:31