发布
社区首页 >问答首页 >服务器端Javascript:为什么?

服务器端Javascript:为什么?
EN

Stack Overflow用户
提问于 2009-03-27 20:13:35
回答 5查看 8.1K关注 0票数 35

服务器端javascript的使用很普遍吗?为什么要使用它,而不是任何其他服务器端脚本?有没有特定的用例让它比其他服务器端语言更好?

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-27 20:16:26

它是这样的:

服务器很贵,但用户会在浏览器中免费为您提供处理时间。因此,与任何大到需要运行多台服务器的站点上的客户端代码相比,服务器端代码的成本相对较高。但是,有些事情是不能留给客户端的,比如数据验证和检索。您希望在客户端执行这些操作,因为这意味着用户的响应时间更快,您的服务器基础设施更少,但安全性和可访问性方面的考虑意味着需要服务器端代码。

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

既然我们都是(大部分)程序员,我们应该立即发现新的问题。不仅有开发两套相同逻辑所涉及的额外工作,而且还涉及维护它的工作,平台导致的不可避免的错误不能很好地匹配,以及随着实现随着时间的推移而引入的错误。

进入服务器端javascript。其思想是您只需编写一次代码,即可在服务器和客户端上运行相同的代码。这似乎解决了大部分问题:您可以一次完成服务器和客户端逻辑的全套工作,没有漂移,也没有重复维护。当您的开发人员只需要了解一种用于服务器和客户端工作的语言时,这也是很好的。

不幸的是,在现实世界中,它的效果并不是那么好。问题有四个方面:

  1. 页面的服务器视图与页面的客户端视图仍然有很大的不同。服务器需要能够做一些事情,比如直接与数据库对话,这是不应该通过浏览器完成的。浏览器需要做一些事情,比如操作与服务器不匹配的DOM。
  2. 你不能控制客户端的javascript引擎,这意味着你的服务器代码和客户端代码之间仍然存在重要的语言差异。
  3. 数据库通常比web服务器更大的瓶颈,所以节省和性能的好处最终少于expected.
  4. While几乎每个人都知道一点javascript,并不是很多开发人员真正了解和理解javascript。

这些并不是完全无懈可击的技术问题:将服务器支持的语言限制为大多数浏览器都能很好地支持的javascript子集,提供了解这个子集和服务器端扩展的IDE,制定一些关于页面结构的规则以最小化DOM问题,并提供一些样板javascript以包含在客户机上以使平台更易于使用。结果是像Aptana Studio/Jaxer,或者最近的Node.js,这可能是非常好的。

但并不完美。在我看来,有太多的陷阱和小的兼容性问题,让它真正发光。最终,与开发人员的时间相比,额外的服务器仍然很便宜,而且大多数程序员能够使用javascript之外的其他工具来提高工作效率。

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

票数 53
EN

Stack Overflow用户

发布于 2009-03-27 20:16:01

我认为服务器端Javascript的一个很酷的用法是用于数据验证,但并不经常使用。使用它,您可以编写一个javascript文件来验证表单,在客户端检查它,然后在服务器端再次检查它,因为我们不应该信任客户端的任何东西。它可以让你的验证规则保持干爽。非常方便。

另请参阅:

票数 7
EN

Stack Overflow用户

发布于 2009-03-27 20:17:59

Javascript只是一种语言。因为它只是一种语言,你可以随心所欲地使用它…在您的浏览器中,在服务器上,嵌入到其他应用程序、独立应用程序等中。

也就是说,我不知道“服务器端Javascript”有很多新的开发。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/691307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档